npm模块安装,如何解决报错CERT_HAS_EXPIRED?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
面对稍稍有些时间(比如半年以前)的node
项目的时候,使用npm
安装模块依赖的时候,就极有可能会各种warning
漫天飞舞,并且最后还会安装失败,这就是nodejs
项目所特有的现象。那么,本文中所描述模块安装时可能遇到的一个新的错误,报错内容是“CERT_HAS_EXPIRED”。这种现象该如何处理呢?
苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:node@18.14.2
,npm@9.6.7
。
报错信息
报错信息类似如下:
npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/zrender/download/zrender-5.0.1.tgz?cache=0&sync_timestamp=1605884142817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-5.0.1.tgz failed, reason: certificate has expired
npm ERR! A complete log of this run can be found in: C:\Users\sunan\AppData\Local\npm-cache\_logs\T10_33_59_334Z-debug-0.log
reason: certificate has expired
关键词:certificate has expired
。
排查过程
排查这里还需要查看npm
的仓库设置,参考命令:
npm config get registry
通过排查可以发现:
package-lock.json
文件中有很多npm.taobao.org
的字样。- 而默认的仓库地址并不是淘宝的源,而是华为的仓库地址。
报错原因
报错原因居然时淘宝源的网站ssl
证书挂了!!直接访问这个淘宝源地址,可以看到下面的报错截图:
解决方案一
既然https
服务挂了,可以强制不使用https
服务,而使用http
服务。执行下列命令:
npm cache clean --force
npm config set strict-ssl false
然后再执行:
npm install
解决方案二
可以直接更换一下这个淘宝的仓库地址,这个非常简单。可以更换为其它仓库地址的。命令如下:
npm config set registry https://registry.cnpmjs.org
或者:
npm config set registry https://registry.npmmirror.com
npm config set registry https://repo.huaweicloud.com/repository/npm/
更多仓库地址可以参考:
如果感觉配置没有生效,那么可以强制刷新一下缓存。执行命令:
npm cache clean --force
解决方案三
个人建议使用cnpm
或者yarn
来安装相关依赖,比较官方的这个npm
出错的概率挺大。当然,也开始试试最新的pnpm
。命令如下:
cnpm install
yarn
pnpm install
总结
苏南大叔来总结一下,解决方案的思路就是这样:
(1)哪个仓库地址挂了,那么就摒弃它,换个新的仓库地址吧。
(2)哪个包安装工具不好用,那么就换另外一个好用的新的安装工具。
更多苏南大叔的nodejs
相关经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。