如果你写 JavaScript 或 Node.js 程序,大概率遇到过这个麻烦:A 项目要 Node 20,B 项目要 Node 22,系统里只装了一个版本,装多了又不知道怎么切换。Node.js 是一种让 JavaScript 脱离浏览器、直接在电脑上运行的软件环境。nvm(Node Version Manager,Node.js 版本管理器)就是解决这个问题的开源命令行工具:在一台电脑上安装任意多个 Node.js 版本,一条命令随时切换。它是 GitHub 上 95,000 star 的开源项目,最新版本为 v0.40.7,被社区广泛视为 Node.js 多版本管理的事实标准。

nvm 解决什么问题

Node.js 版本迭代很快,不同项目对版本要求不同:老项目可能只兼容 Node 18,新项目要求 Node 24。直接改动系统里安装的版本,容易影响其他依赖它的项目。nvm 把每个版本装到独立目录,用命令自由切换,互不干扰。具体用途包括:试用新版本、多个项目各用各的版本、升级前先验证兼容性。

nvm 支持什么环境

nvm 以 shell 函数的形式工作(shell 是命令行界面,例如 Linux 的 bash、macOS 的 zsh),支持 bash、zsh、ksh、dash 等 POSIX 兼容 shell。运行平台为 Linux、macOS、Unix,以及 Windows 下的 WSL(Windows Subsystem for Linux,Windows 内运行的 Linux 子系统)。它不支持原生 Windows 命令行;Windows 用户可改用 WSL、Git Bash、MSYS、Cygwin 环境,或使用 nvm-windows 等面向 Windows 的同类工具。

安装 nvm

官方提供一行安装命令(同时用于升级):

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash

脚本会把 nvm 克隆到 /.nvm 目录,并向 shell 配置文件(/.bashrc、~/.zshrc 等)追加加载代码。安装完成后重开终端,或手动加载配置文件,nvm 即可使用。macOS 用户需先安装 Xcode Command Line Tools;通过 Homebrew 安装不受官方支持,遇到问题建议按官方方式重装。

日常用法

  • nvm install 24:安装 Node.js 24,并自动切换过去
  • nvm use 22:切换到已安装的 Node.js 22
  • nvm ls:列出本机已安装的版本
  • nvm ls-remote:查看可安装的远程版本
  • nvm alias default 20:把 Node.js 20 设为新终端的默认版本
  • nvm which 20:显示指定版本可执行文件的路径

第一次安装的版本会自动成为默认版本。nvm 还支持 LTS 别名(LTS 全称 Long Term Support,即长期支持版,是官方维护时间较长的稳定版本线):nvm install --lts 安装最新长期支持版,nvm install lts/argon 安装指定 LTS 线。

用 .nvmrc 锁定项目版本

在项目根目录创建 .nvmrc 文件,写入版本号(如 22 或 lts/*)。团队成员进入项目后执行 nvm use,即可自动切到该版本;配合 nvshim 等工具还能做到进入目录自动切换。这能显著减少「在我机器上是好的」这类因版本不一致引发的问题。

迁移全局包与离线安装

换版本时,执行 nvm install --reinstall-packages-from=current lts/*,可在安装新版本的同时,把当前版本的全局 npm 包一并迁移(npm 是 Node.js 自带的包管理工具,用于下载安装别人写好的 JavaScript 库)。断网环境可用 nvm install --offline,只从本地缓存安装。网络较慢时,可设置 NVM_NODEJS_ORG_MIRROR 环境变量指向 Node.js 二进制镜像站,加速下载。

常见坑

  • 输入 nvm 提示 command not found:检查安装脚本是否正确写入了 shell 配置文件,然后重开终端;macOS 默认使用 zsh,需确保 ~/.zshrc 已生效
  • which nvm 查不到路径:nvm 是 shell 函数而非可执行文件,用 nvm -v 验证即可
  • 装了新版本但全局包不见了:用 --reinstall-packages-from 迁移
  • Alpine Linux 等小型发行版:nvm 默认下载官方预编译二进制,Alpine 基于 musl C 库,与主流发行版不兼容,需加 -s 参数从源码编译安装

结论

nvm 是 Node.js 多版本管理的事实标准工具:95,000 star,一条命令完成安装与切换,.nvmrc 让项目版本保持一致。无论是刚接触 Node.js 的新手,还是需要维护多个项目的开发者,nvm 都是处理多版本问题的首选工具。