本文手把手带你在 Windows 上用 NVM 管理多个 Node.js 版本,涵盖安装、镜像配置、常用命令、企业代理与编译依赖、常见故障排查与进阶技巧。比参考文章更细、更全面。

NVM 和 Node.js 是什么,有什么用?

  • Node.js:基于 Chrome V8 的 JavaScript 运行时,用来跑脚本、前端构建工具、服务端程序等。
  • NVM(Node Version Manager for Windows):在同一台机器上安装、切换、卸载多个 Node.js 版本的工具。
  • 为什么需要 NVM
    • 不同项目依赖不同 Node 版本(例如老项目用 14,新项目用 20)。
    • 隔离每个 Node 版本对应的全局 npm 包,避免冲突。
    • 快速测试不同版本兼容性。

安装前准备

  • 已安装过 Node.js 的,建议先卸载(控制面板 → 程序和功能 → Node.js → 卸载)。
  • C:\Program Files\nodejs 下还残留内容,可手动删除(注意先备份你确实需要的文件)。
  • 确保你能以管理员身份打开 PowerShell/命令提示符(切换版本时需要创建符号链接)。

安装 NVM(nvm-windows)

  • 下载:前往 nvm-windows Releases 下载最新 nvm-setup.zip
  • 安装:解压并运行 nvm-setup.exe,按向导完成安装。
    • NVM 安装路径(Root):建议使用你自己的用户目录。例如:
      • C:\Users\用户\AppData\Local\nvm(你给的路径之一,合适)
    • Node.js 符号链接目录(Symlink):Node 的“当前版本”将被链接到此目录。可选:
      • C:\nvm4w\nodejs(你给的路径之一,避免写入 Program Files,可减少权限问题)
      • 或保留默认 C:\Program Files\nodejs(可能需要管理员权限)
  • 完成后新开一个命令行窗口,验证:
nvm version

可选:配置国内镜像(强烈推荐)

建议选择国内镜像源,例如淘宝镜像https://registry.npmmirror.com/

nvm-windows 的配置文件是 settings.txt,位于 NVM 安装目录(例如 C:\Users\用户\AppData\Local\nvm\settings.txt)。打开并添加/修改如下两行以提升下载速度:

node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/

保存后重开命令行窗口再执行安装命令。

提示:

  • 你也可以使用环境变量(了解即可):NVM_NODEJS_ORG_MIRRORNVM_NPM_MIRROR
  • nvm list available 会从镜像拉取可用版本列表,镜像不稳定时可稍后再试。

安装与切换 Node.js 版本

  • 查看可安装版本:
nvm list available
# 或
nvm ls available
  • 安装稳定/LTS/指定版本:
# 最新稳定版(Current,有时会更前沿)
nvm install latest

# LTS 通常更适合生产
nvm install lts

# 指定版本与位数(64 通常默认)
nvm install 16.14.0
nvm install 16.14.0 64
  • 切换版本并验证:
nvm use 16.14.0
node -v
npm -v
  • 设置默认版本(新开终端自动生效):
nvm alias default 16.14.0
  • 查看/卸载已安装版本:
nvm list
nvm uninstall 16.14.0

LTS 还是 Current?

  • LTS(长期支持):稳定、维护周期长,生产环境优先。
  • Current(最新):功能最新,适合尝鲜或本地验证。
  • 建议:生产选 LTS;本地可同时装 LTS+Current,按项目切换。

全局 npm 包与包管理器

  • 每个 Node 版本都有自己的 npm 全局目录。切换版本后,全局包也随之切换(这正是隔离的价值)。
  • 常见做法:在每个项目里用本地依赖,不依赖全局包。
  • Node 16.9+ 可启用 Corepack 来管理 Yarn/pnpm 版本:
corepack enable
# 使用项目内声明的包管理器版本(package.json 中的 "packageManager" 字段)

在中国网络环境的实用加速

  • npm 源切换(影响包依赖下载,不影响 Node 可执行文件下载):
npm config set registry https://registry.npmmirror.com
  • pnpm/yarn 同理可配置镜像源(视所用包管理器而定)。

编译环境与 node-gyp(可选)

部分依赖需要编译(如 node-gyp):

  • 安装 VS Build Tools(含 C++ 工具链),例如使用 Winget:
winget install --id Microsoft.VisualStudio.2022.BuildTools --source winget
  • 安装完成后,重新打开命令行,确保 node-gyp 可以编译(通常在首次安装需要编译的包时触发)。

常见问题排查

  • 切换版本提示权限/失败(exit status 5/权限不足)
    • 以管理员身份运行命令行。
    • 将“符号链接目录”设为你可写的目录(如 C:\nvm4w\nodejs),避免 C:\Program Files\nodejs
  • nvm list available 拉不下列表
    • 检查镜像配置是否为 https://npmmirror.com/mirrors/node/
    • 稍后再试或临时切换网络。
  • 切换后 node -v 仍是旧版本
    • 关闭并重新打开命令行窗口(刷新 PATH)。
    • 检查系统环境变量 PATH 中是否存在其他 Node 目录,移除它们(保留符号链接目录)。
  • 全局包“丢了”
    • 正常现象:每个 Node 版本有各自的全局包。切换版本即切换全局包。
  • .nvmrc 自动识别
    • nvm-windows 不会自动读取 .nvmrc。可手动 nvm use <version>,或用脚本增强。

与 WSL、Docker 的关系

  • nvm-windows 仅管理 Windows 下的 Node。WSL 中请使用 Linux 版 nvm(curl 安装脚本)。
  • 若你用 Docker,容器内的 Node 版本与主机无关,由镜像控制。

目录与文件一览(默认/推荐)

  • NVM 根目录(你可选的):C:\Users\用户\AppData\Local\nvm
    • 存放各版本 Node:...\nvm\v16.14.0\, ...\nvm\v18.19.1\
    • 配置:settings.txt
  • 符号链接目录(推荐避免 Program Files):C:\nvm4w\nodejs
    • 指向“当前使用”的 Node 版本,命令行里的 node/npm 实际来自这里

常用命令速查表

  • 查看已装版本nvm list
  • 可安装版本nvm list available
  • 安装指定版本nvm install <version> [32|64]
  • 安装最新/稳定nvm install latest / nvm install lts
  • 切换版本nvm use <version>
  • 设默认版本nvm alias default <version>
  • 卸载版本nvm uninstall <version>
  • 查看架构nvm arch
  • 显示 nvm 版本nvm version

选择版本的实用建议

  • 新项目:优先用最新 LTS。
  • 旧项目:跟随项目 .nvmrc 或文档指定版本(手动切换)。
  • 构建工具链(Webpack/Vite)较新时:Node 版本至少满足其最低要求。

更多推荐