如何在 Windows 上的身份验证代理后面安装 NPM?

Tob*_*ias 30 proxy node.js

我需要在 Windows 上运行最新版本的 Node 和 NPM。我安装了 Node 0.5.8 并从 GitHub 下载了 NPM 的源代码。我遵循的安装 NPM 的步骤列在其 GitHub 站点上,但我在运行以下命令时遇到问题:

node cli.js install npm -gf
Run Code Online (Sandbox Code Playgroud)

但它失败并显示以下错误消息:

Error: connect UNKNOWN
at errnoException (net_uv.js:566:11)
at Object.afterConnect [as oncomplete] (net_uv.js:557:18)

System Windows_NT 5.1.2600
command "...\\Node\\bin\\node.exe" "...\\npm\\cli.js" "install" "npm" "-gf"
cwd ...\npm
node -v v0.5.8
npm -v 1.0.94
code UNKNOWN
Run Code Online (Sandbox Code Playgroud)

我认为这是一个问题,因为我需要在我的代理上进行身份验证才能连接到 Internet。但是我发现无法告诉安装程序使用我的凭据进行登录。是否有可能通过命令行参数向 npm 安装提供我的代理 IP 和登录信息?

如果需要,我可以使用 pastebin 提供完整的日志(但似乎没有更多相关信息)。

Eri*_*orn 39

set http_proxy对我来说效果很好,但是每次打开命令提示符时我都必须输入它。所以我不得不结合多个答案,现在我的答案是永久性的。

我的顺序如下:

  • C:\Users\YourUserName
  • 创建一个名为 .npmrc
  • 在该文件中键入以下内容(如果您在 AD 域中):

proxy = http://domain\\username:password@ip:port

  • 或者在您不在 AD 域中时使用:

proxy = http://username:password@ip:port

  • 保存文件
  • 打开命令提示符并尝试使用 npm

其他人使用以下额外命令取得了额外的成功:

strict-ssl = false

*您应该能够使用 IP 地址或代理 URL 来代替上面的“IP”。

您的代理字符串可能需要稍微调整一下,但这使得我不必每次都添加它。

干杯

  • 让我的工作:`proxy = http://ip:port/ https-proxy = http://ip:port/ registry = http://registry.npmjs.org/strict-ssl = false` (9认同)
  • 注意,如果您的密码包含“@”,npm 将无法正确解析您的代理设置。一个潜在的解决方法是在 npm 配置中放置一个伪造的用户名:密码,并使用本地代理(如提琴手)修改请求的代理授权标头以获得正确的用户名:密码。请记住,存储在 Proxy-Authorization 中的 username:password 是 base64 编码的。 (4认同)

小智 10

也许设置一个环境变量对你有用:

set HTTP_PROXY=http://user:pass@server.url:port
Run Code Online (Sandbox Code Playgroud)

(在我的例子中,这解决了“connect UNKNOWN”,但我得到了一个完全不同的“socket hang up”错误。我也尝试设置 HTTPS_PROXY 环境变量,但得到了相同的结果。)


小智 8

我有这个相同的问题,这是我为使这项工作所做的工作:

  • 去: C:\Users\YourUserName
  • 创建一个名为 .npmrc
  • 它的条目将显示为:

    registry = http://registry.npmjs.org
    
    Run Code Online (Sandbox Code Playgroud)
  • node cli.js install npm -gf再次尝试该命令。


rob*_*rob 5

经过一番研究,我可以这样使用它:

  1. 安装 NTLM 授权代理服务器或 NTLM 的其他代理服务器,例如 Cntlm。就我个人而言,我更喜欢python服务器,因为我可以修补它,而且性能不是问题。

  2. 设置配置;请注意,就我而言,我必须同时启用 LM 和 NT 模式,而且我怀疑现在这是正常情况。

  3. 设置 http_proxy 和 https_proxy 环境变量以指向您的本地代理:

    设置 http_proxy="localhost:5865"
    设置 https_proxy="localhost:5865"

  4. npm 现在应该可以工作了,当然它应该从定义了上述环境变量的 shell 中执行。