执行npm i或创建React项目时遇ENETUNREACH错误求解决
问题
此前一切正常,但昨日尝试使用npx create-react-app appname创建新项目,或是执行npm i为现有项目安装依赖时,出现以下错误:
npm ERR! code ENETUNREACH npm ERR! syscall connect npm ERR! errno ENETUNREACH npm ERR! request to https://registry.npmjs.org/body-parser failed, reason: connect ENETUNREACH 0.0.31.144:80 npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\(.log file address)
已尝试以下方法但均无效:
- 检查网络连接:网络正常
- 清理缓存并重试安装:问题依旧
- 防火墙设置:在Windows Defender防火墙中启用了node.exe的公网和私网权限
- 删除package-lock.json:移除node_modules文件夹和package-lock.json后重新执行
npm install - 重装Node.js:卸载后重新安装Node.js 21.7.1,无改善
- 检查npm配置:执行
npm config list发现https-proxy = "http://8080/",尝试执行npm config set proxy http://localhost:8080后出现ECONNREFUSED错误:
npm ERR! code ECONNREFUSED npm ERR! errno ECONNREFUSED npm ERR! FetchError: request to https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz failed, reason: npm ERR! at ClientRequest.<anonymous> and further errors.
于是将配置改回npm config set https-proxy = http://8080/
请问该错误的原因是什么,如何解决?
原因分析
核心问题是npm无法通过当前配置的代理连接到npm官方源:
ENETUNREACH错误说明npm尝试连接代理服务器0.0.31.144:80时,网络无法到达该地址,大概率是代理地址配置无效或代理服务已停止运行。- 切换到
localhost:8080后出现ECONNREFUSED,说明本地8080端口没有运行代理服务,连接被拒绝。
解决方法
方法1:清除无效代理配置(直连网络环境)
如果你的网络不需要代理,直接清除npm的代理配置:
npm config delete proxy npm config delete https-proxy
执行后重新尝试npm install或创建React项目,验证是否恢复正常。
方法2:配置正确的代理信息(需使用代理的环境)
若所在环境必须用代理,确保代理地址、端口、认证信息(如有)准确:
- 确认代理服务器的有效地址(如
http://proxy.example.com:8080) - 执行以下命令配置:
npm config set proxy http://proxy.example.com:8080 npm config set https-proxy http://proxy.example.com:8080
如果代理需要用户名和密码,使用如下格式:
npm config set proxy http://username:password@proxy.example.com:8080 npm config set https-proxy http://username:password@proxy.example.com:8080
配置完成后测试npm install是否正常。
方法3:切换到国内npm镜像源
若代理问题无法解决,可切换到国内镜像源绕开网络问题:
npm config set registry https://registry.npmmirror.com/
之后再执行安装命令即可。
内容的提问来源于stack exchange,提问作者Ahsan
相关产品推荐
相关产品推荐

