一次性解决掉npm安装失败的问题
更换npm为国内镜像
在终端执行.
npm set registry http://registry.npmmirror.com
首先, 打开"我的电脑". 找到"c盘中用户文件夹". 找到你当前正在使用的"用户"





代码如下.
registry=http://registry.npmmirror.com/
disturl=https://registry.npmmirror.com/-/binary/node/
# node-sass预编译二进制文件下载地址
sass_binary_site=https://registry.npmmirror.com/-/binary/node-sass
# sharp预编译共享库, 截止2022-09-20 sharp@0.31.0的预编译共享库并未同步到镜像, 入安装失败可切换到sharp@0.30.7使用
sharp_libvips_binary_host=https://registry.npmmirror.com/-/binary/sharp-libvips
python_mirror=https://registry.npmmirror.com/-/binary/python/
electron_mirror=https://registry.npmmirror.com/-/binary/electron/
electron_builder_binaries_mirror=https://registry.npmmirror.com/-/binary/electron-builder-binaries/
# 无特殊配置参考{pkg-name}_binary_host_mirror={mirror}
canvas_binary_host_mirror=https://registry.npmmirror.com/-/binary/canvas
node_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/sqlite3
better_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/better-sqlite3
MAC同学,
如果是M1芯片的. 需要先更新一些库. 不是M1的不用管
包括但不限于:
brew install pkg-config cairo pango libpng jpeg giflib librsvg
-
命令行方式:
npm config set registry http://registry.npmmirror.com -
编辑 ~/.npmrc 文件, 设置方案和windows的一样
registry=http://registry.npmmirror.com/
disturl=https://registry.npmmirror.com/-/binary/node/
# node-sass预编译二进制文件下载地址
sass_binary_site=https://registry.npmmirror.com/-/binary/node-sass
# sharp预编译共享库, 截止2022-09-20 sharp@0.31.0的预编译共享库并未同步到镜像, 入安装失败可切换到sharp@0.30.7使用
sharp_libvips_binary_host=https://registry.npmmirror.com/-/binary/sharp-libvips
python_mirror=https://registry.npmmirror.com/-/binary/python/
electron_mirror=https://registry.npmmirror.com/-/binary/electron/
electron_builder_binaries_mirror=https://registry.npmmirror.com/-/binary/electron-builder-binaries/
# 无特殊配置参考{pkg-name}_binary_host_mirror={mirror}
canvas_binary_host_mirror=https://registry.npmmirror.com/-/binary/canvas
node_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/sqlite3
better_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/better-sqlite3
附赠:
npm官方库搜索: https://www.npmjs.com/
JS语法规则:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference
rsa.js很古老的一个库 https://ohdave.com/rsa/
npm 默认其实是有“进度”的,只是你现在这种情况都是缓存 / 已经装好了,所以一闪而过只剩一句:
up to date in 1s
如果你想更清楚地看到安装过程 / 进度,可以用下面几种办法:
1️⃣ 强制显示进度条
npm 自带进度条配置:
npm config set progress true
之后再执行:
npm install --registry=https://registry.npm.taobao.org
如果真的有包要下载,就会看到类似:
[####......] | reify: XX% ...
如果之前被设置成
progress=false,就不会显示,这条命令就是把它打开。
2️⃣ 用 --verbose 看详细日志(最直观)
想看“正在干啥、在下什么包”的具体过程:
npm install --registry=https://registry.npm.taobao.org --verbose
你会看到:
- 正在解析依赖
- 正在下载哪些包
- 写入 node_modules 的过程
虽然不是一个漂亮的进度条,但能非常详细地看到安装进度。
3️⃣ 强制重新下载(否则可能直接“up to date”)
如果你已经安装过一次,npm 缓存都好了,再次 npm install 往往只有一句:
up to date in 1s
这种情况本来就没有下载过程,自然也看不到进度条。
如果你就是想“看一眼全过程”,可以:
# 清空 node_modules 和 package-lock.json
rm -rf node_modules package-lock.json # PowerShell 用: rm -r -fo node_modules,package-lock.json
# 再重新装
npm install --registry=https://registry.npm.taobao.org --verbose
这样肯定能看到一大串下载日志 + 进度输出。
4️⃣ 总结一句话版本
- 想要进度条:
npm config set progress true - 想要详细过程:
npm install --verbose - 总是 “up to date” 看不到:说明已经装好了,需要删掉
node_modules再装一遍才能看到完整过程。
如果你把你现在 npm install 的完整输出贴出来,我也可以帮你判断,是“已经装好了”还是“被静默跳过了”。
你现在不是“没有进度”,而是 请求刚开始就挂了:证书过期(CERT_HAS_EXPIRED),所以一直在重试:
attempt 1 failed with CERT_HAS_EXPIRED
attempt 2 failed with CERT_HAS_EXPIRED
...
而且你用的是老的淘宝源:
https://registry.npm.taobao.org
这个源基本已经被官方替换成 npmmirror.com 了,证书问题也经常出。你这台机器上 Python 用清华源也报 SSL 问题,其实是一类问题。
1️⃣ 先换一个正常的 npm 源(推荐)
✔ 推荐 1:用官方源(最干净)
在 web 目录下执行:
npm config set registry https://registry.npmjs.org
# 然后再装:
npm install --verbose
✔ 推荐 2:用新的国内镜像(npmmirror)
如果访问 npmjs 比较慢,可以用 npmmirror:
npm config set registry https://registry.npmmirror.com
# 再执行
npm install --verbose
然后你可以看当前使用的是哪个源:
npm config get registry
应该显示为你刚设置的那个地址,而不是 taobao。
2️⃣ 临时使用命令行参数也可以
不改全局配置,只这次用:
npm install --registry=https://registry.npmmirror.com --verbose
# 或
npm install --registry=https://registry.npmjs.org --verbose
如果这样能跑通,就说明问题确实是 registry.npm.taobao.org 的证书。
3️⃣ 仍然报 CERT_HAS_EXPIRED 时再排查
如果换了源之后 仍然 是 CERT_HAS_EXPIRED,那可能是:
-
系统时间不对
- 检查 Windows 时间是否正确(年份/月份对不对)。
-
公司代理 / 防火墙拦截 HTTPS,用自签证书解密流量
- 浏览器访问你设置的 registry 地址(例如
https://registry.npmmirror.com)看是否也有证书红叉。 - 如果是公司代理,需要把公司的根证书导入系统,然后再让 npm 信任(这个就要找 IT 了)。
- 浏览器访问你设置的 registry 地址(例如
在这种公司内网场景下,有人会用下面这种“暴力方式”(不安全,只建议内网临时用):
npm config set strict-ssl false
然后再:
npm install --verbose
⚠️ 这会对所有 npm 请求关闭证书校验,外网环境不推荐。
4️⃣ 关于“看到安装进度”的部分
你现在已经加了:
npm install ... --verbose
只要 网络正常、证书没问题,你就会看到一大堆诸如:
npm http fetch GET ...
npm timing reify:loadTrees ...
[####........] reify: XX% ...
但目前安装过程在 第一步请求就失败了,所以只能看见 repeated 的 CERT_HAS_EXPIRED。
建议你下一步这么做:
在 E:\my\fumi\E\myinstall\code\test\yewu\zidonghua\EqpMange\web 目录里依次试:
npm config set registry https://registry.npmmirror.com
npm install --verbose
如果还有错误,把新一段完整报错贴出来(尤其是最上面的几行和最后几行),我可以继续帮你看是源问题、时间问题还是代理问题。
你现在电脑上的 Node 是 v22.15.1,但很多 Vue3 / ESLint / Vite 老项目要求:
Node.js ≥ 16,推荐 v16.20.1(LTS)
最稳妥的办法是 安装多个 Node 版本并在项目间自由切换。
下面给你 Windows 上最推荐、最实用的方式 👇
✅ 方法一:使用 nvm-windows(最推荐 / 企业开发通用)
Windows 官方的 node version manager:
nvm-windows(不是 Linux 的 nvm)。
1️⃣ 下载 nvm-windows
打开 GitHub(国内也能访问):
👉 https://github.com/coreybutler/nvm-windows/releases
下载:
- nvm-setup.exe(安装包)
双击安装即可。
2️⃣ 安装 Node 16.20.1
安装完成后,在 CMD 或 PowerShell 输入:
nvm install 16.20.1
等待几秒即可。
你可以输入:
nvm list
会看到两套版本:
* 22.15.1 (current)
16.20.1
3️⃣ 切换到 Node 16.20.1
进入你的项目目录 web 并切换 Node:
nvm use 16.20.1
如果成功,会看到:
Now using node v16.20.1 (64-bit)
4️⃣ 验证版本
node -v
npm -v
结果应该变成:
v16.20.1
8.x.x(或 7.x.x)
⚠️ 注意:Anaconda 的虚拟环境对 Node 没有影响
你看到的提示 (EqpManage) 来自 Anaconda 的 Python 环境,它不会影响 Node 和 npm,放心。
Node 的切换完全由 nvm-windows 管理。
🎉 这样做的好处
- 同时保留 Node 22 / 18 / 16,不会冲突
- 每个项目可以用它最兼容的 Node 版本
- 切换速度超快,不需要重装 node
🔧 如果你已经装过 node(例如 v22.15.1)
nvm-windows 会自动接管,不需要卸载旧版本。
如果担心冲突,也可以:
- 先卸载旧 Node
- 再安装 nvm-windows
但一般不需要。
📌 小结(最简单的操作顺序)
# 1. 安装 nvm-windows
# 2. 安装 Node 16
nvm install 16.20.1
# 3. 切换 Node 版本
nvm use 16.20.1
# 4. 验证
node -v
npm -v
切换后,再在你的 web 项目里:
npm install --legacy-peer-deps
npm run dev
如果你愿意,我可以继续帮你检查:
- 你的 web 目录的 package.json 的脚本
- npm 的依赖安装冲突
- 前端项目启动失败的问题
你只需要把 package.json 的前 50 行 或 "scripts" 部分贴出来即可。
好,这里已经很明确问题出在哪儿了:
nvm root -> E:\my_install\app\nvm
NVM_HOME -> E:\my_install\app\nvm
NVM_SYMLINK -> D:\nvm4w\nodejs ❌
也就是说:
- nvm 自己装在 E 盘:
E:\my_install\app\nvm - 但是“当前 node.exe 的链接目录”(NVM_SYMLINK)被设置成了 D 盘的 D:\nvm4w\nodejs
- 这个目录十有八九不存在/不在 PATH 里,所以
nvm use 16.20.1虽然提示成功,但系统根本找不到 node.exe,自然就出现:
'node' 不是内部或外部命令
我们要做的事就是:把这个 NVM_SYMLINK 目录改成一个真实存在并且在 PATH 里的目录。
下面一步一步来 👇
第一步:改 nvm 的 settings.txt 配置
-
在 CMD 里打开配置文件:
notepad E:\my_install\app\nvm\settings.txt -
找到类似这一行(大致长这样):
root: E:\my_install\app\nvm path: D:\nvm4w\nodejs -
把
path:这一行改成一个你想用来放 node.exe 的目录,比如最常用的:path: C:\Program Files\nodejs如果
C:\Program Files\nodejs不存在,可以先用资源管理器新建这个文件夹。 -
保存并关闭记事本。
第二步:修正环境变量里的 NVM_SYMLINK
当前是:
echo %NVM_SYMLINK%
D:\nvm4w\nodejs ❌
我们要让它和刚才 settings.txt 的 path 一样,比如:
setx NVM_SYMLINK "C:\Program Files\nodejs"
执行完会提示成功,但注意:setx 只对“新开的窗口”生效,当前 CMD 不会立刻更新。
第三步:确保新目录在 PATH 里
-
打开 环境变量 设置(图形界面):
- 右键 此电脑 → 属性 → 高级系统设置
- 点击 环境变量
- 在“系统变量”或“用户变量”中找到
Path→ 双击
-
确认列表里有一条:
C:\Program Files\nodejs- 如果没有:点击“新建”,填上这条路径,确定保存
- 如果有旧的 Node 路径,例如
E:\my_install\app\nodejs\之类,可以选中 → 删除,避免冲突
-
全部点“确定”退出。
第四步:重新打开 CMD,切换 node 版本
⚠️ 现在要关闭所有之前开的 CMD 窗口,然后:
-
新开一个 CMD(或 PowerShell)
-
先确认变量没问题:
echo %NVM_SYMLINK%理想结果:
C:\Program Files\nodejs -
执行切换:
nvm use 16.20.1 -
验证:
node -v npm -v where node预期结果类似:
v16.20.1 8.x.x C:\Program Files\nodejs\node.exe
如果能看到这些,说明 node 版本管理已经完全正常了 🎉
第五步:回到你的前端项目继续安装依赖
回到你的前端目录:
cd E:\my\fumi\E\myinstall\code\test\yewu\zidonghua\EqpMange\web
npm install --registry=https://registry.npmjs.org --legacy-peer-deps
:: 或你之前用的 npmmirror 源
:: npm install --registry=https://registry.npmmirror.com --legacy-peer-deps
成功后:
npm run
看一眼有哪些脚本(有 dev 就 npm run dev,没有就用 start / serve 等)。
如果你按上面做完,node -v 还是失败,或者 where node 指向了奇怪的位置,把这三条命令的输出贴给我:
echo %NVM_HOME%
echo %NVM_SYMLINK%
type E:\my_install\app\nvm\settings.txt
我可以直接根据内容帮你把路径改到位。

浙公网安备 33010602011771号