NPM模块安装错误

8
我遇到了一个问题:在尝试安装Node.js模块时,出现了“错误:无法建立隧道套接字,原因是 getaddrinfo ENOTFOUND”。看起来是代理出了问题。我已经检查了浏览器设置,代理已被禁用。但是当我在命令提示符中运行“npm config get proxy”时,会得到“192.168.98.5:8080”的结果。请问如何禁用这个代理?
8个回答

15

首先,尝试执行npm config delete proxy。如果出现类似于Error: ENOENT,unlink '/Users/drlazor/.npmrc'的内容,则说明没有npm配置文件,因此也没有代理设置。

其次,请使用npm config get proxy验证是否没有代理设置。你应该会得到一个null或上述错误。如果仍然获得与null不同的结果,则应确保您没有设置环境变量HTTP_PROXY

最后,如果前两个方法都无效,请尝试从浏览器访问URL;这可能是网络问题。


3
"npm config set proxy null" 是我完全移除代理的最佳方式,因为由于某种原因,代理存在默认值。 - Jamie Burke
1
代理设置已清除,现在一切正常。谢谢! - davidwickman
太酷了!将代理设置都设为null...对我有用..真是神奇的解决方案..花了好几个小时才解决。 - gagan sharma
如果设置了环境变量HTTP_PROXY,而您又不是在HTTP代理后面工作,那么也可能会出现此错误。 - Arley

5

您应该查看npm配置页面,了解如何设置和修改配置值。代理键存储要用于连接到npm仓库的代理服务器。请尝试以下内容:

npm config delete proxy

5
注意: 只适用于未使用代理服务器(即从个人电脑)的情况下执行以下命令。
首先执行以下命令:
npm config edit

打开npm配置文件,通过在行首添加";"(分号)注释以下两行内容。

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

完成了。 现在可以安装任何你想要的包。

npm install -g cordova
npm install -g npm

或者其他您需要安装的内容

即使执行了 npm config delete https-proxy,我仍然遇到问题。然后我尝试了 npm config edit,惊讶的发现 https-proxy 仍然被设置了!将其删除后问题得到解决。谢谢。 - akash

2
我曾经处于相同的状态,因为代理值格式错误而出现了这个错误(我只是在代理值的开头漏掉了“http://”)。
如果需要设置代理,请使用以下格式(值取决于您的网络):
npm config set proxy http://proxy.mydomain:3128 npm config set https-proxy http://proxy.mydomain:3128

1
如果您的NPM配置为使用不同的NPM注册服务器(可能是您在工作机器上而没有连接到网络/VPN),也会发生这种情况。要查看是否是这种情况,请执行以下操作:
npm config edit

寻找:

registry=http://alternateurl

默认值为:
https://registry.npmjs.org/

您可以连接到您的 VPN/网络,或更改配置以进行纠正。


1
您需要设置所有3个代理。
npm config set proxy http://proxy.name.xx:port
npm config set http-proxy http://proxy.name.xx:port
npm config set https-proxy http://proxy.name.xx:port

0
如果通过终端或创建.npmrc设置代理无法解决问题,请尝试在c:\ Users \ 'username'中放置.typingsrc文件,并使用以下内容:
{
  "proxy": "http://proxy.name.xx:port",
  "https-proxy": "http://proxy.name.xx:port",
  "strict-ssl": false
}

0
如果您没有代理,请使用以下命令:
npm config delete https-proxy
npm config delete proxy

如果您正在使用代理,请使用以下方法:

npm config set proxy $PROXY
npm config set http-proxy $PROXY

两者都可能起作用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接