解决CERT_HAS_EXPIRED报错:request to https://registry.npm.taobao.org/xxx failed, reason: certificate


问题复现

有个四五年前的 Vue 2 开发环境,最近需要重新拿来写页面。

之前用淘宝npm源做加速,初始化开发环境时会执行:

npm config set registry https://registry.npm.taobao.org/              

npm config get registry
# 显示源的地址
# https://registry.npm.taobao.org/

npm源
现在再安装其他模块,会报错CERT_HAS_EXPIRED,更详细点的信息是 “npm ERR! request to https://registry.npm.taobao.org/xxx failed, reason: certificate has expired” ,xxx是模块名字。就像这样

npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/pyright failed, reason: certificate has expired

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2024-xx-xxTxx_xx_xx_xxxZ-debug-0.log

报错

报错原因

npm.taobao.org 这个域名早在2022年就正式下线了,新域名是 npmmirror.com 。详情可以看官方公告:https://developer.aliyun.com/mirror/NPM

解决方案

改新域名

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

禁止ssl检查

不推荐使用这种方法

npm config set strict-ssl false
<think>嗯,用户遇到了一个很典型的npm证书过期问题,而且明确指向了淘宝镜像源。从引用内容看,用户已经在多个来源(优快云博客、技术社区等)查到了类似案例,说明这是个普遍性问题。不过用户没有简单照搬解决方案,而是来确认最佳实践,这种严谨态度值得肯定。 用户可能是个前端开发者,正急着安装axios却被证书问题卡住工作进度。ta的提问非常精准,直接截取了错误代码CERT_HAS_EXPIRED和具体镜像地址,说明有基本的npm错误排查能力。有趣的是四条引用都提到淘宝镜像,看来2024年初淘宝镜像证书过期确实造成大面积影响。 核心问题其实是镜像源维护方没有及时更新SSL证书。虽然引用里提到本地时间/防火墙等因素,但结合错误信息中明确的"certificate has expired",基本可以锁定是服务端问题。解决方案需要兼顾临时性和长期性: 1 短期最快捷的方式确实是切换镜像源,淘宝官方后来也建议迁移到npmmirror.com新域名 2 对于必须用旧域名的场景,关闭SSL验证可以作为应急方案(但必须强调安全风险) 3 长远看应该更新npm配置,避免每次都要手动指定registry 用户可能不知道的是,淘宝镜像早在2022年就启用了npmmirror.com新域名,旧域名逐渐淘汰。这个背景信息需要补充在解决方案里,否则用户可能反复遇到类似问题。另外要注意提醒清除缓存这个容易被忽略的步骤——很多用户换了镜像源还是报错就是因为没清缓存。 考虑到用户明确要求"解决方法",回复要突出可操作性。把命令格式写成代码块形式最直观,比如`npm config set registry=https://registry.npmmirror.com`这种带高亮的写法。安全警告也不能少,特别是建议关闭SSL验证时要加明显警示符号⚠️ </think>根据引用内容和常见解决方案,解决 `npm` 请求 `https://registry.npm.taobao.org` 时出现 `CERT_HAS_EXPIRED` 证书过期错误的步骤如下: ### 原因分析 1. **淘宝镜像旧域名证书过期** 淘宝 npm 镜像已迁移至新域名 `https://registry.npmmirror.com`,旧域名 `registry.npm.taobao.org` 的 SSL 证书已失效[^1][^2][^3]。 2. **本地系统时间错误**(次要可能) 若本地时间与网络时间不同步,会导致 SSL 证书验证失败[^4]。 --- ### 解决方案 #### ✅ 方法 1:切换至官方新镜像源(推荐) ```bash # 设置新镜像源 npm config set registry https://registry.npmmirror.com # 验证配置 npm config get registry ``` > **执行后重新运行 `npm install`** > 新域名 `registry.npmmirror.com` 由淘宝镜像维护,证书有效且内容同步[^1][^2]。 #### ⚠️ 方法 2:临时关闭 SSL 验证(仅限测试环境) ```bash npm config set strict-ssl false ``` > **注意**:此操作会降低安全性,生产环境禁用[^3]。 #### 🔧 方法 3:检查系统时间 1. **Windows** - 右键任务栏时间 → “调整日期/时间” → 开启“自动设置时间” 2. **Linux/macOS** ```bash # 同步网络时间 sudo ntpdate pool.ntp.org ``` #### ♻️ 方法 4:清除 npm 缓存 ```bash npm cache clean --force ``` --- ### 总结建议 | **步骤** | **命令/操作** | 必要性 | |------------------------|-----------------------------------------------|--------| | 1. 切换镜像源 | `npm config set registry https://registry.npmmirror.com` | 必需 | | 2. 同步系统时间 | 根据系统操作 | 可选 | | 3. 清除缓存 | `npm cache clean --force` | 推荐 | > **关键提示**: > 淘宝已弃用 `npm.taobao.org` 域名,**永久解决方案是更新镜像源至 `registry.npmmirror.com`**,而非关闭 SSL 验证[^1][^2][^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值