问题:网上下载项目进行npm i安装依赖包出现报错
npm ERR! request to https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz failed, reason: certificate has expired

certificate has expired,认证已经失效的意思。网上查询后初步断定是代理问题,由于淘宝镜像已经将https://registry.npm.taobao.org弃用,现在使用的是https://registry.npmmirror.com/。于是我将npm的代理更新到最新的npm淘宝镜像,在终端执行如下代码

npm config set registry https://registry.npmmirror.com/

然后可以通过

npm config get registry ///查看当前npm源 

重新执行

npm -i

并没有什么用,一样的问题。确定已经更改了最新的淘宝镜像,并且网上搜索也没有得到解决方案后,我查看项目配置文件

在package-lock.json中发现,储存的地址是https://registry.npm.taobao.org

发现这个问题后尝试将前缀改为新的镜像地址

然后依旧报错

npm ERR! sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= integrity checksum failed when using sha1: wanted sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= but got sha1-rs+z1bzjVGbGKApfE3i0/PbpZIU=. (161219 bytes)

sha1匹配值对不上。也就是换了新镜像后更改了sha1匹配值。

遂将package-lock.json文件整个删除,然后重新进行npm安装依赖包解决问题。

总结

出现问题应该进行一步一步排查,例如本次事件优先排除是否镜像代理出问题,然后查看配置文件,慎用网络搜索(我网上查了半天没解决问题),通过对原理的深究来解决问题。

本次解决问题加深了npm使用经验,常用的设置镜像指令如下

npm config get registry
#查看当前镜像源,cnpm同理
npm config set registry 镜像地址 
#设置当前npm的镜像
npm config set proxy 127.0.0.1:7890
#设置http代理,当一些包需要在官网下载的时候使用,避免下载太慢。该地址是clash的默认地址,clash默认开启7890端口。根据你自己使用的代理方式修改127.0.0.1:7890
npm config set https-proxy 127.0.0.1:7890 
#设置https代理
最后修改:2024 年 09 月 27 日
希望这篇文章对你有用,能给你带来一个好心情!