有没有办法使npm安装(该命令)后面的代理工作?

阅读.npmrc文件中的代理variables,但它不起作用。 试图避免手动下载所有需要的软件包和安装。

我这样解决了这个问题:

  1. 我运行这个命令:

     npm config set strict-ssl false 
  2. 然后将npm设置为使用http运行,而不是https:

     npm config set registry "http://registry.npmjs.org/" 
  3. 然后我使用这个语法来安装软件包:

     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代理。

在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_PROXYHTTPS_PROXY添加到您的环境中,每个variables具有相同的值

HTTP://用户名:密码@ proxyAddress:proxyPort

例如,如果你有Windows,你可以添加代理如下:

它在Windows上看起来如何

在我的情况下,我忘了在我的configuration文件(可以在C:\ Users \ [USERNAME] \ .npmrc)代理地址中设置“http://”。 所以,而不是有

 proxy=http://[IPADDRESS]:[PORTNUMBER] https-proxy=http://[IPADDRESS]:[PORTNUMBER] 

我有

 proxy=[IPADDRESS]:[PORTNUMBER] https-proxy=[IPADDRESS]:[PORTNUMBER] 

哪一个当然不起作用,但是错误信息也没有太多帮助…