npm ERR! network timeout...

问题 有一次修改了几行简单的代码,然后把分支合并到develop,再自动触发gitlab的ci。
但过了一会看日志,发现报错了。npm ERR! network timeout...
具体如下图所示:
npm ERR! network timeout...
文章图片

初步分析 看提示是说从源拉取依赖的时候,网络超时了。
初步断定是网络问题,所以想着一会再重试看看。
结果重试了好几次,结果都一样。
因为修改的功能需要在开发环境验证后,再部署到测试环境给测试验证,然后部署到预发布环境,所以还是比较着急的。
人是否成长,就看在应对突发紧急问题,导致进展被卡,能否沉稳冷静解决问题。
但往往说起来容易做起来难。
我觉得可以这样:
在心里自己跟自己说几遍,从现在开始,给自己五分钟时间,什么都别想,从头到尾再仔细看看,找出问题所在。
因为之前发布和部署是没问题,而现在重试了几次还是不行。
我也问了后台同时机器的网络等问题,说也没改动什么。
而我又没开通登录机器的权限,所以只能网上好好找找了。
各种说法 1 npm set strict-ssl false 设置代理:

npm config set proxy http://proxy.example.com:3128npm config set https-proxy http://proxy.example.com:3128

设置证书:
npm config set cafile ""

【npm ERR! network timeout...】但我这边看过了,源站的https证书是没问题的,也没过期。
而且我这边已经设置了npm config set strict-ssl false,也不用设置什么proxy代理,也没有什么cafile。
所以该方法不适用。
2 npm config set strict-ssl false
npm install npm -g --ca="" // or npm config set ca ""

这里ca的方式倒是可以试试,因为只是清空,而不像上面第一种方法那样,需要用到证书文件。
我这边修改后重试了ci,结果还是一样。
所以该方法不适用。
3 后台在curl源站地址的时候,提示证书问题 如下图所示:
npm ERR! network timeout...
文章图片

这个可能是curl只认CA证书,因为源站是Let's Encrypt证书,所以可在curl加上--insecure来验证源站。
所以问题依然不是源站证书问题。
4 npm --without-ssl --insecure install 但查看了npm官网,install是没有这两个参数的。
问题找到了 分析问题的时候,时间一直在走,紧张感又来了。
此时可以强迫自己去喝杯水或洗把脸,再回来从头再来。
当打开node官网的时候,无意中看到有2个版本,如下图所示:
npm ERR! network timeout...
文章图片

npm ERR! network timeout...
文章图片

而ci配置文件中,node用的是最新版image: node:latest。
所以感觉是版本问题。
然后让后台同时帮忙查看了下node和npm版本,发现版本和我本地的不一样。
服务器上是最新版,而我本地是LTS。
服务器上的版本是:
npm ERR! network timeout...
文章图片

我本地的版本是:
npm ERR! network timeout...
文章图片

既然感觉是版本问题,那就快速的验证看看。
就是把node指定LTS版本(image: node:12.16.1),然后再跑ci测试下。
结果成功了。
如下图所示:
npm ERR! network timeout...
文章图片

总结
  • 沉着冷静的心态很重要
  • 分析问题需要认真细致,不放过任何蛛丝马迹
  • 平时的也要多学习,不用局限特定范畴。前端、后端等,都可以多学学
最后
  • 公众号《毛毛虫的小小蜡笔》
有疑问和问题,请留言。
如果觉得文章还可以,请点赞或收藏,谢谢。

    推荐阅读