有没有办法使npm安装(该命令)后面的代理工作?
阅读.npmrc
文件中的代理variables,但它不起作用。 试图避免手动下载所有需要的软件包和安装。
我这样解决了这个问题:
-
我运行这个命令:
npm config set strict-ssl false
-
然后将npm设置为使用http运行,而不是https:
npm config set registry "http://registry.npmjs.org/"
-
然后我使用这个语法来安装软件包:
npm --proxy http://username:password@cacheaddress.com.br:80 \ install packagename
如果代理不要求您进行身份validation,请跳过username:password
部分
编辑:我的一个朋友刚刚指出,你可能会得到NPM后面的代理通过设置HTTP_PROXY和HTTPS_PROXY环境variables,然后正常发出命令npm install express (例如)
编辑2:作为@BStruthers评论,请记住包含“@”的密码不会被正确parsing
设置npm
代理
对于HTTP
:
npm config set proxy http://proxy_host:port
对于HTTPS
:
npm config set https-proxy http://proxy.company.com:8080
注意 :https-proxy不具有https
作为协议,而是http
。
如有疑问,请尝试所有这些命令,如下所示:
npm config set registry http://registry.npmjs.org/ npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080 npm config set strict-ssl false set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080 export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080 npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \ --without-ssl --insecure -g install
你是否尝试过命令行选项而不是.npmrc
文件?
我认为像npm --proxy http://proxy-server:8080/ install {package-name}
为我工作。
我也看到了以下内容: npm config set proxy http://proxy-server:8080/
要设置http代理,请设置-g标志:
sudo npm config set proxy http://proxy_host:port -g
对于https代理,再次确保-g标志被设置:
sudo npm config set https-proxy http://proxy_host:port -g
虽然已经有很多很好的build议,但是对于我的环境(Windows 7,使用PowerShell)和node.js(v8.1.2)的最新版本,除了遵循brunowego设置之外,以上都不起作用 。
所以检查您的设置:
npm config list
代理后面的设置:
npm config set registry http://registry.npmjs.org/ npm config set http-proxy http://username:password@ip:port npm config set https-proxy http://username:password@ip:port npm set strict-ssl false
希望这会节省时间给某人
这在Windows中适用于我:
npm config set proxy http://domain%5Cuser:pass@host:port
如果您不在任何域中,请使用:
npm config set proxy http://user:pass@host:port
如果您的密码包含"
@
"
等特殊字符,请将其replace为其编码的URL值,例如"
– > %22
, @
– > %40
, – > %3A
。 %5C
用于字符\
。
$ npm config set proxy http://login:pass@host:port $ npm config set https-proxy http://login:pass@host:port
虽然我设置代理与configuration,问题没有解决,但之后这一个为我工作:
npm –https-proxy http://XX.AA.AA.BB:8080安装cordova-plugins
npm –proxy http://XX.AA.AA.BB:8080安装;
这对我有效。 设置http和https代理。
- npm config set proxy http://proxy.company.com:8080
- npm config set https-proxy http://proxy.company.com:8080
在cmd或Git Bash或其他提示下使用下面的命令
$ npm config set proxy“ http://192.168.1.101:4128 ”
$ npm config set https-proxy“ http://192.168.1.101:4128 ”
其中192.168.1.101是代理IP,4128是端口。 根据您的代理设置进行更改。 它的作品对我来说。
尝试在C:\ Users \ .npmrc中find.npmrc
然后打开(记事本),写入并保存在里面:
proxy=http://<username>:<pass>@<proxyhost>:<port>
PS:请删除“<”和“>”!
这对我有效 –
npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080 npm set strict-ssl=false
我尝试了所有这些选项,但是由于某种原因,我的代理没有任何选项。 然后,从绝望/绝望中诞生,我随机在我的Git Bash shell中尝试curl
,并且工作。
取消所有使用的代理选项
npm config rm proxy npm config rm https-proxy
然后在我的Git Bash shell中运行npm install
完美运行。 我不知道它是如何设置正确的代理和Windows cmd
提示符不是,但它的工作。
对我来说即使python等都将工作,虽然我们的企业代理npm不会。
我试过了
npm config set proxy http://proxyccc.xxx.ca:8080 npm config set https-proxy https://proxyccc.xxx.ca:8080 npm config set registry http://registry.npmjs.org/
按照指示,但不断得到相同的错误。
只有当我从.npmrc文件中删除 https-proxy https://proxyccc.xxx.ca:8080
,npm install electron –save-dev工作
vim ~/.npmrc
在你的Linux机器上添加以下内容。 在许多情况下,不要忘记添加registry
部分作为这个原因失败。
proxy=http://<proxy-url>:<port> https-proxy=https://<proxy-url>:<port> registry=http://registry.npmjs.org/
npm config set proxy <http://...>:<port_number> npm config set registry http://registry.npmjs.org/
这解决了我的问题。
在Windows系统上
尝试删除代理和registry设置(如果已经设置),并通过命令行设置环境variables
SET HTTP_PROXY=http://username:password@domain:port SET HTTPS_PROXY=http://username:password@domain:port
然后尝试运行npm install。 通过这个,你不会在.npmrc中设置代理,但是对于那个会话,它将工作。
当代理设置中没有http / http前缀时,即使代理主机和端口是正确的值,npm也会失败。 它只在添加协议前缀后才起作用。
我的问题归结为我的一个愚蠢的错误。 正如我有一天迅速将我的代理放入一个windows * .bat文件(http_proxy,https_proxy和ftp_proxy)中,我忘记了为URL编码域\ user(%5C)的特殊字符和带有问号的密码'?' (%3F)。 也就是说,一旦你有编码的命令,不要忘记在bat文件命令中转义'%'。
我变了
set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080
至
set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080
也许这是一个边缘案例,但希望它可以帮助某人。
许多应用程序(例如npm)可以使用用户环境variables的代理设置。
您可以将variablesHTTP_PROXY和HTTPS_PROXY添加到您的环境中,每个variables具有相同的值
HTTP://用户名:密码@ proxyAddress:proxyPort
例如,如果你有Windows,你可以添加代理如下:
在我的情况下,我忘了在我的configuration文件(可以在C:\ Users \ [USERNAME] \ .npmrc)代理地址中设置“http://”。 所以,而不是有
proxy=http://[IPADDRESS]:[PORTNUMBER] https-proxy=http://[IPADDRESS]:[PORTNUMBER]
我有
proxy=[IPADDRESS]:[PORTNUMBER] https-proxy=[IPADDRESS]:[PORTNUMBER]
哪一个当然不起作用,但是错误信息也没有太多帮助…