使用淘宝镜像在Node.js环境中安装依赖时经常会出现一个问题,特别是CERT_HAS_EXPIRED错误和TLS验证问题。TLS证书的管理越来越严格,尤其是在Node.js和npm更新之后。用户在尝试切换到淘宝镜像时经常会遇到TLS验证错误。出现这种情况的原因是npm从v7版本开始增强了TLS证书验证,这意味着某些镜像源(包括淘宝镜像)可能没有及时更新或不支持最新的TLS协议。
问题检查在使用npm时,您面临以下挑战:
尝试使用命令npm cache clean --force清除npm缓存,无法正常重新安装。
使用ping https://registry.npm.taobao.org检查确认网络正常运行。
npm config get proxy和npm config get https-proxy都返回空值,说明没有代理异常。
使用 npm install -g npm 更新 npm 时,出现 invalid npm update 错误,但更新后依赖仍然无法成功安装。
研究该问题后,发现与 TLS 相关。解决流程如下:
解决问题的方法
更换镜像源,命令:npm config set registry https://registry.npm.taobao.org。
npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/miniprogram-api-typings/-/miniprogram-api-typings-3.12.0.tgz failed, reason: certificate has expired
npm ERR! A complete log of this run can be found in: C:\Users\uljdc\AppData\Local\npm-cache\_logs\2024-11-12T07_27_21_890Z-debug-0.log
关闭 TLS 证书验证:关闭 npm 的 TLS 证书验证,命令 npm config set strict-ssl false,解决了安装依赖的问题。此方法虽然可以绕过证书验证问题,但也带来了潜在的安全风险,尤其是在与可能受到中间人攻击等威胁的公共 npm 存储库交互时。安装成功完成。