npm下载失败报错 ETIMEDOUT 和CERT_HAS_EXPIRED

npm下载失败报错 ETIMEDOUT 和CERT_HAS_EXPIRED

今天使用npm尝试下载Vue脚手架工具时出现报错,迷茫...

1. 措施一,切换npm源

(1)通过输入命令,查到我当前使用的npm源是官方npm源

npm config get registry

输出类似于[https(https://so.csdn.net/so/searchq=https&spm=1001.2101.3001.7020)://registry.npmjs.org/的URL,表示当前的npm源是官方的npm源。

(2)将npm源切换到淘宝的npm源

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

紧接着......又报错了,这次报错是 CERT_HAS_EXPIRED,具体原因似乎是证书过期

2. 措施二,检查日期,清除缓存

我了解到,CERT_HAS_EXPIRED是一个由Node.js和npm抛出的错误,表示你正在尝试访问的服务器的SSL证书已经过期。这通常是因为你的系统时间与服务器时间不同步,或者你的系统时间被篡改。

所以先试试看吧!

这里参考了博客:npm ERR! code CERT_HAS_EXPIRED:解决证书过期问题的详细步骤-CSDN博客

(1)先输入以下命令来查看当前系统时间:

date

检查一下,如果系统时间不正确,就把他改对

(2)输入以下命令来清除npm的缓存:

npm cache clean --force

(3)最后输入以下命令来更新npm:

npm install -g npm

依然报错......通过搜索发现应该是清除缓存失败,原来的命令太老了,直接用新的!

3. 清除缓存有效方案

使用命令

npm cache verify

这次果然成功 了!

万万没想到......这次仍然没有解决证书报错的问题!

4. 取消ssl验证

最后,采用了取消ssl验证的方案!

npm config set strict-ssl false

这次终于成功了!

不容易啊不容易啊(擦汗...擦汗...)

总结

此次使用npm下载时,出现了两次报错,第一次出现ETIMEDOUT报错的原因是由于使用了官方的npm源(虽然有尝试使用魔法看能不能解决但后面发现好像并不行?)。

第二次出现CERT_HAS_EXPIRED报错的原因主要是因为npm显示证书过期,而真实原因貌似是因为2014年2月27日,npm不再支持自签名证书,而npm install走的是https协议,需要通过数字证书来保证的。所以最佳方案是直接通过取消ssl验证的办法直接不检查证书!

同时,在清除缓存哪里也踩坑了,使用2方案只能检查系统时间并更改但是清除缓存时会报警告。

相关推荐
kiracrimson2 天前
npm 入门:包管理器、依赖与 npx
前端·npm·node.js
迪幻3 天前
封装自己的 npm 依赖并存储到个人 GitHub
前端·npm·github
LRL_7 天前
跨平台 Node 模块安装指南:如何利用 pnpm/npm 配置`supportedArchitectures` 锁定平台依赖
前端·npm·node.js
guslegend8 天前
脚手架原理与本地调试:从 bin 软链接到 npm link
前端·npm·node.js·脚手架·前端工程化
孟陬11 天前
#教程 dw, dm, dy, d18m 是何意?万物可 Badge | 定制漂亮精致小徽章,打造眼前一亮 README
npm·github
hasty14 天前
不上传新包,也能改变用户拿到的版本:npm dist-tag 的 OIDC 权限治理
前端·npm·node.js
玖石书16 天前
HiSH 通过 apk 安装 Node.js、npm 与 pnpm
npm·node.js·鸿蒙·hish
FACELESS VOID16 天前
wsl下使用npm,错误识别到了windows下的npm
linux·windows·npm
搬砖的小码农_Sky17 天前
AI Agent:Windows上Node.js安装后 npm -v报错
前端·npm·node.js·人机交互
梅孔立20 天前
Codex 完整教程(Node.js安装 + npm安装Codex + DeepSeek配置 + 快捷键 + 设置)
前端·npm·node.js