npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.org/browserslist failed, reason: certificate has expired
时间: 2025-05-22 10:59:07 浏览: 173
### 解决方案
当遇到 `npm` 报错 `CERT_HAS_EXPIRED` 时,这通常是因为目标服务器(如淘宝镜像源)的 SSL 证书已过期。以下是几种可能的解决方法:
#### 方法一:更新 npm 版本
确保当前使用的 npm 是最新版本,因为旧版可能存在兼容性问题或未修复的安全漏洞。可以通过以下命令完成升级:
```bash
npm install -g npm
```
如果此步骤成功,则再次尝试运行原始命令以验证问题是否解决[^3]。
---
#### 方法二:清理 npm 缓存
有时缓存中的数据可能导致异常行为。通过强制清除缓存来排除此类可能性:
```bash
npm cache clean --force
```
完成后重新执行原命令查看效果。
---
#### 方法三:更换 npm 注册表
由于问题是来自淘宝镜像源 (`https://registry.npm.taobao.org`) 的证书过期,因此可以选择切换到其他可靠的注册表服务提供商,例如官方源或者国内备用镜像源之一——npmmirror。具体操作如下:
```bash
npm config set registry https://registry.npmmirror.com
```
设置完毕后可立即测试新的依赖包安装流程是否正常工作。
---
#### 方法四:临时关闭严格 SSL 验证 (不推荐用于生产环境)
作为一种极端情况下的应急措施,在不影响安全性的情况下允许忽略 SSL 错误继续处理请求。需要注意的是这种方法存在较大安全隐患,仅适用于开发调试阶段而非正式部署场景。
开启方式如下所示:
```bash
npm config set strict-ssl false
```
待任务结束后记得恢复默认配置以免长期暴露风险:
```bash
npm config set strict-ssl true
```
上述四种途径均可有效应对由证书到期引发的相关错误提示信息。
```python
import subprocess
def update_npm():
try:
result = subprocess.run(['npm', 'install', '-g', 'npm'], check=True, text=True, capture_output=True)
print(result.stdout)
except Exception as e:
print(f'Error updating npm: {e}')
update_npm()
```
阅读全文