阅读.npmrc文件中的代理变量,但它不起作用。尽量避免手动下载所有需要的包并安装。


当前回答

要设置http代理,请设置-g标志:

Sudo NPM配置代理http://proxy_host:port -g

对于https代理,再次确保设置了-g标志:

Sudo NPM配置http -proxy http://proxy_host:port -g

其他回答

我是这样解决这个问题的:

我运行这个命令: NPM配置strict-ssl为false 然后设置npm运行http,而不是https: NPM配置注册表http://registry.npmjs.org/ 然后我使用下面的语法安装包: NPM——proxy http://username:password@cacheaddress.com.br:80安装packagename

如果代理不要求您进行身份验证,则跳过用户名:密码部分

编辑:我的一个朋友刚刚指出,你可以通过设置HTTP_PROXY和HTTPS_PROXY环境变量来让NPM在代理后工作,然后正常地发出命令NPM install express(例如)

EDIT2:正如@ bstruthers评论的那样,请记住,包含“@”的密码不会被正确解析,如果包含@,则将整个密码放在引号中

在最后捆绑了不同的答案后,@Kayvar回答的前四行帮助我解决了这个问题:

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

去环境变量和删除或设置为空

HTTP_PROXY和HTTPS_PROXY

这也将解决企业环境的代理问题

$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port

我的问题归结为我犯了一个愚蠢的错误。因为我很快有一天把我的代理放到一个windows *.bat文件(http_proxy, https_proxy和ftp_proxy),我忘记转义url编码的域\用户(%5C)的特殊字符,密码有问号'?”(% 3 f)。也就是说,一旦您有了编码命令,不要忘记在bat文件命令中转义'%'。

我改变了

set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080

to

set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080

也许这是一个边缘情况,但希望它能帮助到一些人。