我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

面对稍稍有些时间(比如半年以前)的node项目的时候,使用npm安装模块依赖的时候,就极有可能会各种warning漫天飞舞,并且最后还会安装失败,这就是nodejs项目所特有的现象。那么,本文中所描述模块安装时可能遇到的一个新的错误,报错内容是“CERT_HAS_EXPIRED”。这种现象该如何处理呢?

苏南大叔:npm模块安装,如何解决报错CERT_HAS_EXPIRED? - npm-CERT_HAS_EXPIRED
npm模块安装,如何解决报错CERT_HAS_EXPIRED?(图4-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:node@18.14.2npm@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模块安装,如何解决报错CERT_HAS_EXPIRED? - 证书过期报错截图
npm模块安装,如何解决报错CERT_HAS_EXPIRED?(图4-2)

排查过程

排查这里还需要查看npm的仓库设置,参考命令:

npm config get registry

苏南大叔:npm模块安装,如何解决报错CERT_HAS_EXPIRED? - package-lock
npm模块安装,如何解决报错CERT_HAS_EXPIRED?(图4-3)

通过排查可以发现:

  • package-lock.json文件中有很多npm.taobao.org的字样。
  • 而默认的仓库地址并不是淘宝的源,而是华为的仓库地址。

报错原因

报错原因居然时淘宝源的网站ssl证书挂了!!直接访问这个淘宝源地址,可以看到下面的报错截图:

苏南大叔:npm模块安装,如何解决报错CERT_HAS_EXPIRED? - 仓库地址证书挂了
npm模块安装,如何解决报错CERT_HAS_EXPIRED?(图4-4)

解决方案一

既然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相关经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   node    npm