前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么不向前兼容?!解决npm i 安装类库时的 CERT_HAS_EXPIRED 错误

为什么不向前兼容?!解决npm i 安装类库时的 CERT_HAS_EXPIRED 错误

作者头像
LIYI
发布2024-02-22 15:35:58
1K0
发布2024-02-22 15:35:58
举报
文章被收录于专栏:艺述论专栏艺述论专栏

这个错误大概是这样的:

代码语言:javascript
复制
npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz failed, reason: certificate has expired

它是在我们执行 npm i 或 npm run xxx 指令时发生的。

这个错误是什么意思呢?

提示说,证书过期了或自定义证书无效,在访问和拉取https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz类库链接时,网络请求失败。

我们将这个链接拷贝一下,直接放在浏览器里访问,它也是不可访问的。(在问题爆发时)

这是由于淘宝仓库源网站的证书过期所致。

自2017年2月27日,npm不再支持自签名证书或过期证书。

而淘宝仓库网站恰好又使用了过期的自定义证书。当我们使用 npm i 安装某些类库时,例如类库地址为 https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz,此时npm无法验证来源,于是抛出了 CERT_HAS_EXPIRED 错误。

怎么解决呢?

关闭 SSL 验证:

代码语言:javascript
复制
npm config set strict-ssl false

修改软件源,例如将软件源地址改回官网:

代码语言:javascript
复制
npm config set registry https://registry.npmjs.org/

这个更改的副作用是,更新或安装类库时需要梯子,如果有梯子则无妨。

为什么不向前兼容呢?

不清楚,一向如此。

社区有一些规则的改变,属于基础改变,会对上面的一系列软件建筑产生致命影响。

采用 HTTPS 协议,要求 SSL 验证,不支持自定义的非法证书或过期证书,这些改动是由于安全需要,并非只有 npm 如此,像谷歌的浏览器也作了同样样的安全规则更改。

随着社会的进步,软件的发展,以后仍然会出现类似的基础规则改进,这些变动会对已有的旧软件产生“毁灭”性影响,后果是,你不修改代码或配置,软件就再也无法直接运行。

应对策略也简单,它不兼容我们,那就只有我们兼容它喽。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 艺述论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档