Angular项目安装npm依赖时报ERR_SOCKET_TIMEOUT错误如何解决?
报错信息如下:
正在安装依赖包 (npm)...npm ERR! code ERR_SOCKET_TIMEOUT
npm ERR! errno ERR_SOCKET_TIMEOUT
npm ERR! network 尝试获取 https://registry.npmjs.org/@babel%2fplugin-proposal-nullish-coalescing-operator 时响应体无效:Socket timeout
npm ERR! network 此问题与网络连接相关。
npm ERR! network 多数情况下是处于代理环境下,或网络设置存在错误。
npm ERR! network 如果你正在使用代理,请确保'proxy'配置正确,可参考:'npm help config'npm ERR! 本次运行的完整日志可在以下路径查看:
npm ERR! C:\Users\faizan\AppData\Local\npm-cache_logs\2021-12-07T00_42_46_255Z-debug-0.log
× 依赖包安装失败,详见上文。
Schematic工作流执行失败,详见上文。
1. 切换npm镜像源
默认官方npm源在国内访问不稳定,是触发超时的最常见原因:
- 临时使用国内源执行安装:
npm install --registry=https://registry.npmmirror.com - 永久设置全局npm源:
npm config set registry https://registry.npmmirror.com
设置完成后可执行npm config get registry确认配置生效。
2. 清理无效代理配置
如果之前配置过npm代理但代理已失效,也会导致网络请求超时:
- 执行
npm config list查看当前配置,检查是否存在proxy、https-proxy相关配置项 - 如有无效代理配置,执行以下命令清除:
npm config delete proxy npm config delete https-proxy
3. 调大超时阈值
部分体积较大的依赖包下载耗时较长,默认超时时间不足也会触发报错:
执行npm install --timeout=60000,将超时时间设置为60秒后重试。
4. 清理缓存重试
损坏的本地缓存也可能导致安装异常:
- 执行
npm cache clean --force清理npm全局缓存 - 删除项目根目录下的
node_modules文件夹和package-lock.json文件 - 重新执行安装命令。
5. 排查本地网络限制
以上操作无效时,检查本地网络是否存在限制:
- 切换手机热点等其他网络重试安装
- 检查系统防火墙、杀毒软件是否拦截了npm的网络请求
内容的提问来源于stack exchange,提问作者arsalan rajpoot

