【常见错误】npm ERR! code CERT_HAS_EXPIRED & errno CERT_HAS_EXPIRED

本文讲述了npm遇到CERT_HAS_EXPIRED错误的常见原因,包括SSL证书过期、关闭SSL验证的危险性以及如何通过清除缓存和更换淘宝镜像源来解决问题。提醒读者在处理此类问题时权衡安全与速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

npm ERR! code CERT_HAS_EXPIRED 和 npm ERR! errno CERT_HAS_EXPIRED 都是指  npm 在尝试连接到 npm 仓库时遇到了 SSL 证书过期的问题。这可能是由于您使用的 npm 仓库的证书已过期,或者您的系统时间不正确。

 解决此问题的方法如下

1.关闭 npm 的 SSL 验证

  1. 通常在某些情况下可能因为网络问题、证书过期或者证书不受信任导致无法正常安装包,这时候就可以通过关闭npm的SSL验证来解决问题。
  2. 但是需要注意的是,关闭SSL验证会使你的npm操作不安全,因为它会绕过SSL证书的验证,使你的数据传输存在被中间人攻击的风险。因此,除非必要,否则不建议关闭SSL验证。
npm config set strict-ssl false

2.清除 npm 缓存

有时候,npm 的缓存可能会导致问题。您可以尝试运行以下命令清除缓存

npm cache clean --force

3.扩展: npm 更换淘宝镜像 

如果您使用的是默认镜像, 下载依赖比较慢,可以尝试更改淘宝镜像源!

// 查看当前的镜像设置
npm config get registry

// 然后,将npm设置为淘宝镜像:
npm config set registry https://registry.npmmirror.com/

### 解决方案 当遇到 `npm ERR! code CERT_HAS_EXPIRED` 错误时,通常是因为目标服务器的 SSL 证书已过期或客户端无法验证其有效性。在这种情况下,可以采取以下措施来解决问题。 #### 方法一:切换到可靠的 NPM 镜像源 由于淘宝镜像源 (`https://registry.npm.taobao.org`) 的证书可能存在问题,建议更换为更稳定的官方或其他可信的镜像源。以下是具体操作: 1. **清空缓存** 使用以下命令清除本地 npm 缓存以避免潜在冲突: ```bash npm cache clean --force ``` 2. **更改注册表地址** 将 npm 注册表地址修改为国内其他稳定镜像源,例如 npmmirror: ```bash npm config set registry https://registry.npmmirror.com/ ``` 3. **确认配置成功** 执行以下命令查看当前使用的注册表地址是否正确: ```bash npm config get registry ``` 如果返回值为 `https://registry.npmmirror.com/`,则说明设置成功[^4]。 --- #### 方法二:临时忽略 SSL 证书校验(不推荐) 如果确实需要继续使用淘宝镜像源而暂时不想处理证书问题,可以通过禁用 SSL 校验的方式绕过此错误。注意这种方法存在安全隐患,仅适用于测试环境。 运行以下命令全局关闭严格 SSL 检查: ```bash npm set strict-ssl false ``` 完成后再次尝试安装依赖项即可。不过为了安全起见,在完成必要工作后应重新启用严格模式: ```bash npm set strict-ssl true ``` --- #### 方法三:更新 Node.jsNPM 版本 有时该类问题也可能源于旧版本软件对现代加密协议的支持不足。因此升级至最新稳定版可能是另一个有效途径。 下载并安装最新的 LTS (Long Term Support) 版Node.js包可以从官网获取或者通过nvm(Node Version Manager)管理器来进行便捷切换: ```bash nvm install --lts && nvm use --lts ``` --- ### 示例代码片段 下面展示如何快速切换NPM源以及验证变更效果的过程: ```bash # 步骤A: 清理现有缓存数据 npm cache clean --force # 步骤B: 设置新的远程仓库URL npm config set registry https://registry.npmmirror.com/ # 步骤C: 查询当前所指代的服务端位置 currentRegistry=$(npm config get registry); echo $currentRegistry; [[ "$currentRegistry" == "https://registry.npmmirror.com/" ]] || exit 1; # 可选D部分 - 测试功能正常与否 npm install -g cnpm ``` 以上脚本不仅实现了基本的功能需求还加入了简单的逻辑判断保障流程顺利完成. ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值