如何在Linux上修复使用npm时出现的ENETUNREACH连接问题

6

我没有使用代理,只是一个尝试学习如何在我的机器(Linux)上本地开发create-react-app的新手。

以下是tracepath registry.npmjs.org的输出:

 1?: [LOCALHOST]                        0.020ms pmtu 1500
 1:  2001:4451:664:1400:caf6:c8ff:fef2:bdcb                2.906ms !N
 1:  2001:4451:664:1400:caf6:c8ff:fef2:bdcb                0.995ms !N
     Resume: pmtu 1500

我想这证明了我没有使用代理。

但我一直收到这个错误提示:

npm ERR! code ENETUNREACH
npm ERR! syscall connect
npm ERR! errno ENETUNREACH

对于 npm 的任何问题,我不知道该怎么做。

我尝试过:

  1. 删除我的主目录中的 package.json。删除我的主目录中的 package-lock.json。删除我的主目录中的 .npm 目录。
  2. 使用 npm config 命令清除缓存。
  3. 将 https-proxy 从配置设置为 null。将代理从配置设置为 null。将注册表设置为 https://registry.npmjs.org
  4. 将注册表设置为 http://registry.npmjs.org 卸载 npm 和依赖项,然后重新安装。卸载 npm 和依赖项,然后安装 nvm 并通过它重新安装 node。

npm install --verbose 没有显示任何错误消息。

请有人帮帮我,我几乎试过所有除了重装操作系统之外的方法。


tracepath 的输出与您是否使用代理无关。 代理只会被特定应用程序用于特定协议。 代理的使用可能会受到环境变量和特定应用程序配置文件的影响(“代理还是不代理”这个问题可能完全不相关)。 - larsks
我不知道... 从搜索了很多解决方案后,我发现许多解决方案都是在npm配置中配置正确的代理。但我认为我不需要这样做。 - greg
4个回答

29
问题是节点18(在16上没有发生)首先尝试通过ipv6解析。
可以通过导出环境变量来覆盖它: export NODE_OPTIONS="--dns-result-order=ipv4first"

0
我刚刚解决了这个问题,方法是暂时禁用IPv6。
在Linux上,我使用了以下命令:
sudo sysctl net.ipv6.conf.all.disable_ipv6=1

-1
我遇到了同样的问题,上面的答案都没有解决。我所做的是卸载所有内容,然后使用NVM重新安装,这解决了问题。

2
请提供更多关于如何完成这个任务的信息。 - undefined

-1
去“控制面板”>“网络和互联网”>“网络和共享中心”>“更改适配器设置”>右键单击正在使用的网络>“属性”>选择“Internet协议版本4”>点击“属性”>选择“自动获取两个选项”。享受吧。。
这对我有用。

他们要求一个Linux解决方案。 - Ferares

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