nvm-windows的使用

为什么要装 nvm-windows

同时维护几个 Node 项目的人多半都遇到过这个尴尬:A 项目跑在 Node 16,B 项目要 Node 18,C 项目最近升到 22 用了新的内置 fetch。直接装一个版本然后到处兼容是行不通的 —— 总有一个会跑不起来。

nvm-windows 就是用来解决这个问题的:它是一个独立的命令行工具,管理本机的多个 Node 版本,一行命令切换。Windows 上和 macOS / Linux 上的 nvm 不是同一个项目(那个是 nvm-sh/nvm,基于 bash),用法虽然像但底层完全不同 —— 别照着 macOS 的教程在 Windows 上敲,会被空环境变量坑到。

nvm-windows的使用

下载与安装

官方 GitHub Release:

https://github.com/coreybutler/nvm-windows/releases

下载列表里挑 nvm-setup.exe(还有一个 nvm-noinstall.zip 是绿色版,新手不建议)。

装之前先做两件事:

  1. 卸载电脑里已有的 Node —— 控制面板里搜 Node.js 卸载干净。如果留着,nvm 切换出来的版本和原生 Node 会打架,node -v 永远输出原生的那个,你会以为切换没生效。
  2. 右键以管理员身份运行 nvm-setup.exe。装的时候它要往 C:Program Filesnodejs 创建 symbolic link(系统目录,需要权限),普通用户跑会装,但切换版本时会失败。

装完打开一个新的 PowerShell / CMD(老的开着会读不到新加的 PATH),输入:

nvm version
# 输出类似 1.1.12 就是装好了

关键配置:镜像源

nvm-windows 默认从 https://nodejs.org/dist 下载 Node 安装包,国内访问这个域名速度感人 —— 不是慢,是大概率超时。第一次用之前一定要换镜像。

# Node 安装包镜像
nvm node_mirror https://npmmirror.com/mirrors/node/

# npm 安装包镜像
nvm npm_mirror https://npmmirror.com/mirrors/npm/

这两条命令把镜像写进 nvm 安装目录下的 settings.txt。直接编辑那个文件也能改。

除了淘宝镜像,可选的国内源还有:

# 腾讯云
nvm node_mirror https://mirrors.cloud.tencent.com/nodejs-release/

# 华为云
nvm node_mirror https://repo.huaweicloud.com/nodejs/

# 中科大(教育网友好)
nvm node_mirror https://mirrors.ustc.edu.cn/node/

都试过,普遍是淘宝最稳,腾讯偶尔更新慢一两天但速度最快。学校宿舍跑教育网用中科大。

安装 / 切换 Node 版本

核心三条命令,几乎覆盖 90% 使用场景:

# 看看远程有哪些版本可装
nvm list available

# 装一个版本(只写大版本号会装当时的最新小版本)
nvm install 18
nvm install 20.11.1   # 指定精确版本

# 切到这个版本(切换需要管理员权限)
nvm use 18

注意:nvm installnvm use 这两条都必须在管理员权限的终端里跑(Win+X → "Windows 终端(管理员)")。不然会报 access is denied,因为切换版本要重写 C:Program Filesnodejs 这个 symlink。

切完验证一下:

node -v        # v18.x.x
npm -v
where node     # C:Program Filesnodejsnode.exe(永远是这个,因为是 symlink)

常用命令速查

下面是日常用得到的命令,加粗的是高频:

  • nvm list(可简写 nvm ls):列出本机装过的所有版本,前面带 * 的是当前激活的
  • nvm install <version>:安装版本,可加 --insecure 跳过 SSL 校验(企业内网证书烂的时候用)
  • nvm use <version>:切换激活版本
  • nvm uninstall <version>:卸载某个版本(省磁盘空间)
  • nvm current:只看当前激活版本,等同 node -v
  • nvm arch [32|64]:看当前是 32 位还是 64 位,默认跟系统走
  • nvm on / nvm off:启用 / 停用整套版本管理(很少用,临时禁用调试用)
  • nvm proxy [url]:设代理,适用走 socks5 / http proxy 的场景。nvm proxy none 移除
  • nvm root [path]:多版本 Node 的存储根目录,默认装到 nvm 安装目录下
  • nvm node_mirror [url] / nvm npm_mirror [url]:镜像源,见上节
  • nvm version(简写 nvm v):看 nvm 自身版本

典型工作流

实际场景里一个完整的"换 Node 版本"流程通常是这样:

# 1. 看远程有什么(过滤 LTS 版本)
nvm list available

# 2. 装目标版本(选个 LTS 偶数版本最稳)
nvm install 20.11.1

# 3. 切换到新版本
nvm use 20.11.1

# 4. 验证一下
node -v && npm -v

# 5. 重新装项目里的全局工具(切版本后全局包要重装)
npm i -g pnpm yarn typescript ts-node

# 6. 老版本用不上了就删掉
nvm uninstall 16.20.0

第 5 步是 nvm 容易忘的点:每个 Node 版本有独立的 npm 全局目录,切换后之前 npm i -g 装的工具全没了。你会发现 pnpm 命令找不到、vue CLI 不见了,这就是这个原因。

项目级版本锁定(.nvmrc 的替代方案)

macOS / Linux 上的 nvm 支持读取项目根目录的 .nvmrc 文件自动切换版本(配合 cd hook)。nvm-windows 不支持 .nvmrc —— 这是绕不开的差异。

但你可以用 npm 自带的 engines 字段做版本声明:

{
  "name": "your-project",
  "engines": {
    "node": ">=18.0.0 <21.0.0",
    "npm": ">=9.0.0"
  }
}

配合 .npmrc 强制校验:

# .npmrc
engine-strict=true

这样新人 npm install 时如果 Node 版本对不上,会直接报错,提示该用哪个版本。比 .nvmrc 隐式切换更显式,实际维护更舒服。

如果一定要自动切换,可以写个 PowerShell function 挂在 cd 上读 .nvmrc:

# 加到 $PROFILE
function Set-Location-WithNvm {
    param([string]$Path)
    Set-Location $Path
    if (Test-Path .nvmrc) {
        $v = (Get-Content .nvmrc -Raw).Trim()
        nvm use $v
    }
}
Set-Alias cd Set-Location-WithNvm -Option AllScope -Force

但要小心 —— 每次 cd 触发 nvm use 又需要管理员权限,普通终端会报错。所以这招仅对常开管理员终端的人有用。

排错:几个常见坑

1. nvm use 报 access is denied

就是没用管理员权限开终端。重开个管理员 PowerShell 再来。

2. 切换后 node -v 还是旧版本

两种可能:

  • 装 nvm 之前的原生 Node 没卸干净,残留的 node.exe 在 PATH 里抢先了。检查 where node,如果输出多于一行,把多余的卸掉。
  • 终端没重启。nvm use 改的是系统级 symlink,当前终端的环境变量是进程启动时快照的,得开新终端读到新的 PATH。

3. 装版本卡在 "Downloading node version x.x.x..."

镜像没设。回到本文上面"关键配置:镜像源"那一节,把 node_mirror 改成 npmmirror。

4. 全局包切换后全部消失

每个 Node 版本独立 npm 目录,见上一节"典型工作流"第 5 步。可以把常用全局包列个清单贴到 README,切版本后跑一次重装。

5. PowerShell 中 nvm 命令找不到

装好后第一次开终端,PATH 缓存还没刷新。开窗口,或者执行 refreshenv(装了 Chocolatey 才有)。

升级 nvm 本身

nvm-windows 自己也会发新版,修 bug + 加新功能。直接覆盖装就行:

# 1. 看本机当前版本
nvm version

# 2. GitHub 查最新版,下载新的 nvm-setup.exe
# https://github.com/coreybutler/nvm-windows/releases

# 3. 不需要卸载老的,直接以管理员身份运行新 setup
#    它会原地升级,已装的 Node 版本完全保留

# 4. 装完再开新终端验证
nvm version

升级过程不会动你装的 Node 版本,也不会动 settings.txt 里的镜像配置,放心。

一句话总结

对 Windows 开发者来说,nvm-windows 几乎是必装。装完先换镜像,后面所有操作都用管理员身份的终端来跑,基本就不会踩坑。复杂场景配合 package.jsonengines + engine-strict=true 做版本约束,比依赖 .nvmrc 这种隐式方式更稳。

—— 别看了 · 2026
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理 邮箱1846861578@qq.com。
技术教程

前端持续更新⭐收集有特色的库

2024-6-25 11:45:32

技术教程

node管理工具Volta的使用

2024-6-25 11:49:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索