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/

仍然出现同样的错误。

要尝试的事情:

  1. 确保你有互联网连接:ping 8.8.8.8
  2. 确保您的 DNS 解析器正常工作:ping www.google.com
  3. 确保您可以访问 registry.npmjs.org:ping registry.npmjs.org
  4. 确保您可以通过 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/ 确保您正在尝试连接到:

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

https://www.w3schools.com/tags/ref_urlencode.asp

我尝试了很多,但这对我来说效果很好。

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 注册表。