Error : getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
Error : getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
我在公司网络上工作。
正在尝试安装 npm.
但我一次又一次地收到此错误。
$ npm install
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install"
npm ERR! node v6.1.0
npm ERR! npm v3.8.6
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
npm ERR! Please include the following file with any support request:
npm ERR! C:\Angular-test\angular-phonecat\npm-debug.log
也试过这个:npm config set registry https://registry.npmjs.org/
仍然出现同样的错误。
要尝试的事情:
- 确保你有互联网连接:
ping 8.8.8.8
- 确保您的 DNS 解析器正常工作:
ping www.google.com
- 确保您可以访问 registry.npmjs.org:
ping registry.npmjs.org
- 确保您可以通过 https 连接。
在浏览器中尝试:https://registry.npmjs.org/
确保您尝试连接到:
registry.npmjs.org
而不是:
"registry.npmjs.org registry.npmjs.org:443"
或其他一些由几个主机名组成的奇怪字符串,因为解析器抱怨包含端口号的主机名很奇怪,它不应该关心这个。好的,我测试了一下,对于没有找到的主机应该是这样的。
更新
从你对这个答案的评论来看,如果你甚至不能 ping 8.8.8.8,你似乎没有直接连接到互联网。
如果您使用代理访问 Web,则还必须配置 npm
才能使用它。使用:
npm config set proxy http://example.com:8080
npm config set https-proxy http://example.com:8080
但不要 http://example.com:8080
使用您公司实际需要的东西 - 询问某人或查看您的浏览器是如何配置的。
要在 Chrome 中查看您的代理配置,请参阅 this。
更新 2
如果您可以在浏览器中访问https://registry.npmjs.org/但不能运行ping registry.npmjs.org
那么这意味着您的浏览器必须配置为使用代理,或者您的浏览器以外的其他程序必须被限制使用互联网。
在任何情况下,您都应该向贵公司的某个人询问这件事,因为您很可能需要使用特定的代理,或者有人需要解除对您的 npm
的限制并允许它访问网络.
您的计算机上安装的防火墙或网络中的路由器可能会阻止网络访问。不知道你们公司具体配置不好说。
更新 3
删除环境变量 "https_proxy"(如果有)或为 "https_proxy"
使用正确的值
首先,编辑NetworkManager.conf文件:
vim /etc/NetworkManager/NetworkManager.conf
评论这一行:
#dns=dnsmasq
终于
sudo service network-manager restart
sudo service docker restart
如果Ubuntu尝试打开
所有设置 > 网络 > 网络代理
将方法设置为自动并保存。
使用:https://registry.npmjs.org/
确保您正在尝试连接到:
如果没有错误,尝试清除缓存
npm cache clean --force
然后尝试
npm install
即使你有任何错误
npm config set registry https://registry.npmjs.org/
然后尝试
npm install -g @angular/cli
你可以使用这个命令
npm config delete proxy
发生这种情况是因为 formidable
容易出现严重漏洞。因此,您需要通过 运行 上面的命令来覆盖它。
我遇到了同样的问题。原因是公司代理问题。
解决方案是按照@rsp 所说的那样设置代理设置。
npm config set proxy http://example.com:8080
npm config set https-proxy http://example.com:8080
但后来我遇到了同样的问题。这次的原因是我的密码包含一个特殊字符。
In this command you can’t provide a password with special character
。所以解决方案是在密码中提供百分比编码的特殊字符。
For example # has to provide as %23
我尝试了很多,但这对我来说效果很好。
npm config rm proxy
npm config rm https-proxy
以上2个命令就足够了,如果它不起作用也试试这个。
npm config --global rm proxy
npm config --global rm https-proxy
我花了 5 个多小时试图在 Windows 8.1 下删除此消息。所以我想分享我的案例并节省一些人的时间。我不支持代理...但设置代理有助于解决问题。所以我深入发现问题是由 Comodo 防火墙引起的...由于我安装软件包的速度太快而阻止了 cmd(关闭甚至关闭防火墙都无济于事,这导致我花了很长时间才找到问题...似乎就像在后台有一些其他的防火墙进程 运行)。您安装的任何其他 firewall/antivirus 可能会遇到同样的问题,因此请确保 cmd 未被它们阻止。祝你好运!
在我的情况下,这似乎只是一个 间歇性 问题,尝试了几次都没有用,然后查看了 https://registry.npmjs.org(网页运行良好),重试,重试,终于成功了。
对于 Windows 子系统 Linux:
重新启动我的 WSL 终端 (bash/shell) 解决了这个问题(然而,它花了几分钟重新启动)。
使用 nslookup www.google.com
或 npm.org 检查连通性。
首先你需要使用这个命令
npm config set registry https://registry.your-registry.npme.io/
我们这样做是为了将我们公司的企业注册表设置为默认注册表。
您也可以尝试其他给定的解决方案。
如果您在代理后面工作,您必须为 npm 设置代理以将其连接到 repo。
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.somecompany.com:8080
npm config set https-proxy http://myusername:mypassword@proxy.somecompany.com:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:mypassword@proxy.somecompany.com:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.somecompany.com:8080
注意 如果您的密码包含特殊字符,例如@ EX: 密码:mypwd1@ xyz
然后使用 %40 代替 @ Ex:
npm config set proxy http://myusername:mypwd1%40xyz@proxy.somecompany.com:8080
npm config set registry https://registry.npmjs.org/
这是我唯一的解决方案。
大多数情况下,如果您使用的是您的组织提供的系统并且您连接到其 vpn,就会出现此问题。
在这种情况下,断开与 vpn 的连接,然后尝试执行此命令。
npm 配置 rm 代理
npm config rm https-proxy
npm 配置设置注册表 https://registry.npmjs.org/
这 3 个命令一个接一个地为我工作。
运行 sudo service docker restart
是我的关键!在 运行 此命令之前,我能够使用 ping 和浏览器访问 npm
注册表。
我在公司网络上工作。
正在尝试安装 npm.
但我一次又一次地收到此错误。
$ npm install
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install"
npm ERR! node v6.1.0
npm ERR! npm v3.8.6
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
npm ERR! Please include the following file with any support request:
npm ERR! C:\Angular-test\angular-phonecat\npm-debug.log
也试过这个:npm config set registry https://registry.npmjs.org/
仍然出现同样的错误。
要尝试的事情:
- 确保你有互联网连接:
ping 8.8.8.8
- 确保您的 DNS 解析器正常工作:
ping www.google.com
- 确保您可以访问 registry.npmjs.org:
ping registry.npmjs.org
- 确保您可以通过 https 连接。
在浏览器中尝试:https://registry.npmjs.org/
确保您尝试连接到:
registry.npmjs.org
而不是:
"registry.npmjs.org registry.npmjs.org:443"
或其他一些由几个主机名组成的奇怪字符串,因为解析器抱怨包含端口号的主机名很奇怪,它不应该关心这个。好的,我测试了一下,对于没有找到的主机应该是这样的。
更新
从你对这个答案的评论来看,如果你甚至不能 ping 8.8.8.8,你似乎没有直接连接到互联网。
如果您使用代理访问 Web,则还必须配置 npm
才能使用它。使用:
npm config set proxy http://example.com:8080
npm config set https-proxy http://example.com:8080
但不要 http://example.com:8080
使用您公司实际需要的东西 - 询问某人或查看您的浏览器是如何配置的。
要在 Chrome 中查看您的代理配置,请参阅 this。
更新 2
如果您可以在浏览器中访问https://registry.npmjs.org/但不能运行ping registry.npmjs.org
那么这意味着您的浏览器必须配置为使用代理,或者您的浏览器以外的其他程序必须被限制使用互联网。
在任何情况下,您都应该向贵公司的某个人询问这件事,因为您很可能需要使用特定的代理,或者有人需要解除对您的 npm
的限制并允许它访问网络.
您的计算机上安装的防火墙或网络中的路由器可能会阻止网络访问。不知道你们公司具体配置不好说。
更新 3
删除环境变量 "https_proxy"(如果有)或为 "https_proxy"
使用正确的值首先,编辑NetworkManager.conf文件:
vim /etc/NetworkManager/NetworkManager.conf
评论这一行:
#dns=dnsmasq
终于
sudo service network-manager restart
sudo service docker restart
如果Ubuntu尝试打开 所有设置 > 网络 > 网络代理 将方法设置为自动并保存。
使用:https://registry.npmjs.org/ 确保您正在尝试连接到:
如果没有错误,尝试清除缓存
npm cache clean --force
然后尝试
npm install
即使你有任何错误
npm config set registry https://registry.npmjs.org/
然后尝试
npm install -g @angular/cli
你可以使用这个命令
npm config delete proxy
发生这种情况是因为 formidable
容易出现严重漏洞。因此,您需要通过 运行 上面的命令来覆盖它。
我遇到了同样的问题。原因是公司代理问题。 解决方案是按照@rsp 所说的那样设置代理设置。
npm config set proxy http://example.com:8080
npm config set https-proxy http://example.com:8080
但后来我遇到了同样的问题。这次的原因是我的密码包含一个特殊字符。
In this command you can’t provide a password with special character
。所以解决方案是在密码中提供百分比编码的特殊字符。
For example # has to provide as %23
我尝试了很多,但这对我来说效果很好。
npm config rm proxy
npm config rm https-proxy
以上2个命令就足够了,如果它不起作用也试试这个。
npm config --global rm proxy
npm config --global rm https-proxy
我花了 5 个多小时试图在 Windows 8.1 下删除此消息。所以我想分享我的案例并节省一些人的时间。我不支持代理...但设置代理有助于解决问题。所以我深入发现问题是由 Comodo 防火墙引起的...由于我安装软件包的速度太快而阻止了 cmd(关闭甚至关闭防火墙都无济于事,这导致我花了很长时间才找到问题...似乎就像在后台有一些其他的防火墙进程 运行)。您安装的任何其他 firewall/antivirus 可能会遇到同样的问题,因此请确保 cmd 未被它们阻止。祝你好运!
在我的情况下,这似乎只是一个 间歇性 问题,尝试了几次都没有用,然后查看了 https://registry.npmjs.org(网页运行良好),重试,重试,终于成功了。
对于 Windows 子系统 Linux:
重新启动我的 WSL 终端 (bash/shell) 解决了这个问题(然而,它花了几分钟重新启动)。
使用 nslookup www.google.com 或 npm.org 检查连通性。
首先你需要使用这个命令
npm config set registry https://registry.your-registry.npme.io/
我们这样做是为了将我们公司的企业注册表设置为默认注册表。
您也可以尝试其他给定的解决方案。
如果您在代理后面工作,您必须为 npm 设置代理以将其连接到 repo。
npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.somecompany.com:8080
npm config set https-proxy http://myusername:mypassword@proxy.somecompany.com:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:mypassword@proxy.somecompany.com:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.somecompany.com:8080
注意 如果您的密码包含特殊字符,例如@ EX: 密码:mypwd1@ xyz 然后使用 %40 代替 @ Ex:
npm config set proxy http://myusername:mypwd1%40xyz@proxy.somecompany.com:8080
npm config set registry https://registry.npmjs.org/
这是我唯一的解决方案。
大多数情况下,如果您使用的是您的组织提供的系统并且您连接到其 vpn,就会出现此问题。 在这种情况下,断开与 vpn 的连接,然后尝试执行此命令。
npm 配置 rm 代理
npm config rm https-proxy
npm 配置设置注册表 https://registry.npmjs.org/
这 3 个命令一个接一个地为我工作。
运行 sudo service docker restart
是我的关键!在 运行 此命令之前,我能够使用 ping 和浏览器访问 npm
注册表。