npm install时出现:npm ERR! code CERT_HAS_EXPIRED

一、问题描述

npm ERR! code CERT_HAS_EXPIRED 这个错误信息在Node.js的包管理器npm中出现时,表示npm在尝试连接到远程服务器(通常是一个npm仓库)时,发现服务器提供的SSL/TLS证书已经过期。SSL证书是用于加密HTTP连接并验证服务器身份的重要安全组件,确保数据传输的安全性和完整性。
在这里插入图片描述

二、为什么会报错?

当证书过期时,npm客户端会拒绝与该服务器建立安全连接,因为无法验证服务器的身份和安全性。这种情况的原因可能包括:

  1. 服务器端的实际问题:即服务器上部署的SSL证书确实已超过有效期,没有及时更新。
  2. 客户端系统时间不准确:如果本地计算机的系统时间设置不正确,尤其是设置成了一个早于当前日期的时间,可能会导致客户端认为服务器的证书已经过期。
  3. npm缓存了过期的证书:有时候即使服务器证书已更新,但npm缓存中仍保留着旧的、已过期的证书信息,也会触发此错误。

三、解决方法

1、更新系统时间以确保准确性

首先,你需要检查你的系统时间是否正确。你可以使用以下命令来查看和设置系统时间:

# 打开命令提示符
Win+R 输入cmd打开命令提示符

# 输入指令查看系统时间
date

# 输入指令设置系统时间
# 请将"YYYY-MM-DD HH:MM:SS"替换为正确的日期和时间。
sudo date -s "YYYY-MM-DD HH:MM:SS" 

2、清除npm缓存

# 运行一下命令清除npm缓存
npm cache clean --force

3、升级Node.js和npm到最新版本

升级Node.js和npm到最新版本,新版本可能包含更可靠的证书链或更新的CA信任库。

# 执行下面的指令更新npm
npm install -g npm

4、更换镜像源

如果使用的是镜像源(如淘宝npm镜像),则检查镜像源是否也存在证书过期问题,并联系镜像维护者或者暂时切换回官方源。

查看自己的下载源

npm config get registry

提供几个可用的镜像源


npm config set registry http://registry.cnpmjs.org

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

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

5、临时禁用SSL验证

在极少数情况下,临时禁用npm的SSL验证(不推荐这种方法,因为它会降低安全性)仅作为临时解决方案,直到能够通过安全方式解决问题。

切记!!!安装好后要打开SSL验证。

# 关闭ssl验证
npm config set strict-ssl false

# 打开ssl验证
npm config set strict-ssl true
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐