likes
comments
collection
share

npm ERR! network timeout...

作者站长头像
站长
· 阅读数 67

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多支持,谢谢。

问题

有一次修改了几行简单的代码,然后把分支合并到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 "<path to certificate file>"

但我这边看过了,源站的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个版本,如下图所示:

详情 请查看:毛毛虫的小小蜡笔