2011-10-17 13:25:58 +0000 2011-10-17 13:25:58 +0000
30
30

在Windows上如何在认证代理后安装NPM?

我需要在Windows上运行最新版本的Node和NPM。我安装了Node 0.5.8,并从GitHub下载了NPM的源代码。我按照GitHub网站上列出的步骤安装NPM,但我在运行下面的命令时遇到了问题。

node cli.js install npm -gf

但却出现了以下错误信息:

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

我认为这是一个问题,因为我需要在我的代理处进行认证才能连接到互联网。但我发现没有办法告诉安装程序使用我的凭证进行登录。有没有可能通过命令行参数提供我的代理IP和登录信息给npm安装程序?

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

回答 (14)

39
39
39
2012-12-03 20:05:07 +0000

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"。

你的代理字符串可能需要调整一下,但这样我就不用每次都加这个了。

干杯

10
10
10
2011-10-19 17:19:05 +0000

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

set HTTP_PROXY=http://user:pass@server.url:port

(在我的例子中,这解决了 “连接UNKNOWN "的问题,但我得到了一个完全不同的 "socket hang up "错误。我也试过设置HTTPS/_PROXY环境变量,但得到的结果是一样的)。)

8
8
8
2011-11-16 16:41:09 +0000

我也遇到了这个相同的问题,下面是我为解决这个问题所做的工作。

  • 转到: C:\Users\YourUserName
  • 创建一个名为.npmrc 的文件 - 它的条目将显示:

  • 再次尝试命令node cli.js install npm -gf

4
4
4
2012-03-12 09:56:43 +0000

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

1.安装NTLM授权代理服务器或者其他NTLM的代理服务器,比如Cntlm。我个人比较喜欢python服务器,因为可以修修补补,性能也不是问题。

2.设置配置;注意,在我的例子中,我必须同时启用LM和NT模式,我怀疑这是正常情况,现在。

  1. 设置httpproxy和httpsproxy环境变量指向你的本地代理。

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

3
3
3
2013-09-04 10:46:04 +0000

在命令行中输入:

npm set proxy http://user:pass@ip:port

npm set https-proxy http://user:pass@ip:port

不要忘记在用户名前加上HTTP://。这对我来说很有效。

3
3
3
2013-06-13 19:12:07 +0000

下面的方法对我有用。

在Windows 7上:

npm config set proxy xxhttp://username:password@proxyhost:port#

这应该会在.npmrc文件夹中创建一个名为C:/users/<username>的文件。

3
3
3
2016-05-03 20:27:58 +0000

上面的每一个答案都需要用户把她的密码写在一个文本文件中,或者写在一个环境变量中。

就我个人而言,我并不喜欢这样的解决方案,因为它们不安全。所以我试着写了一个应用程序,在客户端(npm, bower, git)和代理之间的交换中注入当前用户的 Kerberos 令牌。也就是说,Active Directory只是Kerberos的专有实现。

我每天都在使用这个软件,在Windows 8.1主机上。你可以在 https://github.com/nilleb/authentication-proxy 上找到代码 (golang) 和第一个发布的二进制文件。

2
2
2
2012-05-02 03:41:48 +0000

按照上面的方法创建了.npmrc文件,然后运行adduser命令,并在下面的cmd提示中解决了这个问题。

npm adduser

运行下面的命令看看你是否有一个授权的用户名:

npm whoami
``` 。
1
1
1
2015-07-07 21:58:10 +0000

你将从你的服务器管理员或支持人员那里得到代理主机和端口。

之后设置

npm config set http_proxy http://username:password@proxyofmycomp.com:itsport
npm config set proxy http://username:password@proxyofmycomp.com:itsport

如果密码中有任何特殊字符,请尝试使用 % urlencode。例如:- pound(hash)可以用%23代替。

1
1
1
2015-06-18 09:54:36 +0000

至少在Windows中,我使用以下设置就可以了。

proxy=http://_domain_%5C_username_:_password_@ **_proxy\_ip_** :_port_

即(1)使用%5C而不是`至少在Windows中,我使用以下设置就可以了。

proxy=http://_domain_%5C_username_:_password_@ **_proxy\_ip_** :_port_

即(1)使用%5C而不是(如其他地方建议的那样),(2)使用IP地址而不是代理服务器的本地机器名称。

1
1
1
2013-09-27 06:46:50 +0000

这三样东西在.npmrc

proxy = http://unam:pwd@host:port
https-proxy = http://unam:pwd@host:port
registry = http://registry.npmjs.org
```中对我都有效。
0
0
0
2016-02-22 06:19:01 +0000

我的解决方法是这样的。

npm config set http_proxy http://username:password@host/IP:port

npm config set proxy http://username:password@host/IP:port

用数值替换参数,在我的例子中,

username 。(空)

密码 。(空)

host/IP 。192.36.36.110

端口 : 8080

所以我的命令是

npm config set http_proxy http://

npm config set proxy http://

0
0
0
2018-01-08 22:13:37 +0000

我的工作原理如下。

registry=http://registry.npmjs.org
proxy=http://<url.pac>
https-proxy=http://<url.pac>
http-proxy=http://<url.pac>
strict-ssl=false

我不需要输入任何用户名或密码,只需要输入PAC文件的网址。

0
0
0
2016-04-29 05:14:16 +0000

CNTLM对我不起作用。我尝试了所有可能的组合。NPM给出了认证错误。Fiddler来拯救了我,拯救了我的时间。它很容易安装和配置。在.npmrc中设置Fiddler Rule为Automatically Authenticated.在.npmrc中设置

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

这对我来说很有效:)