npm install卡在fetchmetadata或extract阶段是因registry.npmjs.org在国内tls握手失败或dns解析异常所致,必须切换为https://registry.npmmirror.com/镜像源,清缓存并删除node_modules和package-lock.json后重试。

VSCode 里 npm install 卡在 fetchMetadata 或 extract 阶段,不是网速慢,而是默认源 registry.npmjs.org 在国内无法稳定 TLS 握手或 DNS 解析——必须切镜像源,不换就永远卡住。
npm install 卡在 fetchMetadata / extract 是什么问题
现象是终端停在某个包名、fetchMetadata、extract 或 idealTree 不动,npm -v 能跑,但安装就是没进展。这不是本地磁盘或 CPU 问题,是 npm 尝试连接官方 registry 时反复超时或握手失败,底层请求被阻断,UI 层却只显示“等待中”。
验证方法:npm config get registry 返回的如果不是 https://registry.npmmirror.com/,就确认是源的问题。
- 切源命令必须带
https://和末尾/:npm config set registry https://registry.npmmirror.com/ - 别用
cnpm:它生成的package-lock.json格式与 npm 不兼容,后续npm install会报Invalid package-lock.json - 改完后必须清缓存:
npm cache clean --force,再删掉node_modules和package-lock.json重试
VSCode 终端里 npm 命令根本找不到或报权限错误
Windows 下常见两种情况:一是 VSCode 没继承系统 PATH,二是 PowerShell 执行策略禁止脚本运行(尤其装全局 CLI 工具如 @vue/cli 时)。
- 先看终端类型:右下角点击终端名称,优先切换成
Command Prompt或Git Bash,避开 PowerShell 的策略限制 - 如果必须用 PowerShell,以管理员身份打开它,执行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser(不是LocalMachine) - 改完策略后,必须彻底退出 VSCode(Windows 任务栏右键 → “退出”,macOS 用
Cmd+Q),否则新策略不生效 - 仍不行?手动把 Node.js 安装路径(如
C:\Program Files\nodejs\)加进系统环境变量PATH
换 pnpm/yarn 后反而报 ENOENT 或 rename 失败
pnpm 的硬链接机制对路径和权限更敏感,尤其在 Windows 下容易因 OneDrive 同步、中文路径、空格或防病毒软件拦截触发 ERR_PNPM_ENOENT 或 rename 错误。
- 检查 Node 版本:
node -v必须 ≥v16.14,推荐v18.x或v20.x - 项目路径不能含中文、空格,也不能在
OneDrive、iCloud等同步目录下;改用纯英文路径,如C:\projects\myapp - 报 rename 错误时,先关掉 VSCode,用任务管理器杀掉所有
node.exe进程,再运行:pnpm store prune - 如果反复失败,退回
npm + 镜像源更稳妥——pnpm 的优势是磁盘节省,不是绝对提速
扩展安装卡在 “Downloading…” 或进度条不动
这不是插件本身问题,是 VSCode 默认直连 marketplace.visualstudio.com,该域名在国内常 DNS 污染或 TLS 握手失败,请求一直 pending,UI 却不报错。
- 关闭所有 VSCode 进程(任务管理器/活动监视器里确认无残留
Code Helper或Code进程) - 编辑用户
settings.json(%APPDATA%\Code\User\settings.json或~/Library/Application Support/Code/User/settings.json),**完全替换**为:
{
"extensions.gallery.serviceUrl": "https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/",
"extensions.gallery.cacheUrl": "https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/publishers"
}
保存后彻底重启 VSCode;首次加载可能稍慢,但后续安装成功率接近 100%。
真正容易被忽略的是:改完配置不彻底退出 VSCode,设置就不会生效;另外,有些插件(比如 Microsoft 官方的 C/C++)不在 Open VSX 上,得去 https://open-vsx.org 搜索,点 Download 拿到 .vsix 链接,再用 code --install-extension 命令行安装——图形界面静默失败的概率远高于命令行。











