nvm 是 Node.js 的版本管理器 (version manager),可在同一台主机上安裝多个版本的 Node.js 环境,因为不同项目可能使用不同的 Node.js 版本,那就需要通过一个版本管理器来切换不同的 Node.js 版本
- nvm-sh/nvm - Github 仓库地址
安装/升级 NVM
脚本安装
可用 cURL 或 wget 指令使用安裝脚本安裝或更新 nvm (更新的时候重新运行下脚本即可):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
# or
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
此安装脚本会把 nvm repo clone 到 ~/.nvm,并将 source line 新增至你的 profile 设定 ( ~/.bash_profile、~/.zshrc、~/.profile 或 ~/.bashrc )
brew 安装
可以使用 brew 安装 nvm
brew install nvm
安装完毕之后检查是否存在如下 source line, 没有可以手动添加到 .zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion
如果在 Linux 执行安装脚本后,执行下面指令会显示以下信息或没有任何信息时候,建议重新打开终端 (terminal) 再重新执行一次 nvm 指令:
$ command -v nvm
nvm: command not found
如果还是无法使用 nvm,可执行下面指令立即应用 ZSH 的设定:
source .zshrc
注意:
- 使用
nvm時,不需要sudo即可使用npm -g全局命令, 使用 sudo 会导致不可预料的权限错误 - 若你有
~/.npmrc,请确保里面不包含任何prefix的设定 (因为和nvm不相容) - 你可以 (但不应该) 保留以前在
系统安裝的 Node.js,但nvm只对你的当前账号可用。可能会导致版本不 match,因为其他使用者会使用/usr/local/lib/node_modules/*,而当前账户会使用~/.nvm/versions/node/vX.X.X/lib/node_modules/*
命令
--version
确认 NVM 是否安裝成功
$ nvm --version
0.40.4
install
利用 NVM 安装 Node.js
安裝 NVM 后,其实还没安装 Node 环境:
$ node
zsh: command not found: node
如果执行下面指令,会提醒你需要执行 install 指令才能安裝 Node.js:
$ nvm use node
N/A: version "node -> N/A" is not yet installed.
You need to run "nvm install node" to install it before using it.
安裝最新版的 Node.js:
$ nvm install node
Downloading and installing node v25.8.0...
Downloading https://nodejs.org/dist/v25.8.0/node-v25.8.0-darwin-arm64.tar.xz...
################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v25.8.0 (npm v11.11.0)
如果要指定安裝版本,可以直接指定版本號:
$ nvm install 24
安装的第一个版本的 Node.js 会成为 nvm 的默认版本,新的 shell 就会以默认版本的 Node.js 来使用 (例如:nvm alias default)。查看目前安裝 Node.js 的版本:
$ node -v
v25.8.0
ls-remote
察看可用的安装版本
可以看目前有哪些可用版本可安装,在版本号前面的 -> 箭头符号代表目前 nvm 正在使用的 Node.js 版本:
$ nvm ls-remote
...
v24.11.0 (LTS: Krypton)
v24.11.1 (LTS: Krypton)
v24.12.0 (LTS: Krypton)
v24.13.0 (LTS: Krypton)
v24.13.1 (LTS: Krypton)
v24.14.0 (Latest LTS: Krypton)
...
v25.7.0
-> v25.8.0
不过刚才的 ls-remote 指令会把所有可用的版本都列出来,但通常会选择安装 LTS(Long-term support,长期支援)版,所以只要加上 -lts 参数就可以只列出可用的 LTS 版:
$ nvm ls-remote --lts
...
v22.22.1 (Latest LTS: Jod)
v24.11.0 (LTS: Krypton)
v24.14.0 (Latest LTS: Krypton)
如果版本号的文字有特殊颜色(不是白色字),则代表该版本的Node.js有通过nvm安装过
ls
查看目前安装了哪些版本
ls 指令可以查看目前安装了哪些版本:
$ nvm ls
v16.20.2
v22.21.0
v24.11.1
-> v25.8.0
default -> 24 (-> v24.11.1 *)
iojs -> N/A (default)
node -> stable (-> v25.8.0 *) (default)
stable -> 25.8 (-> v25.8.0 *) (default)
unstable -> N/A (default)
lts/* -> lts/krypton (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 *
lts/hydrogen -> v18.20.8 (-> N/A)
lts/iron -> v20.20.1 (-> N/A)
lts/jod -> v22.22.1 (-> N/A)
lts/krypton -> v24.14.0 (-> N/A)
use
切换 Node.js 版本
如果要使用 nvm 切换正在使用的 Node.js 版本,可用 use 指令:
$ nvm use v24.11.1
Now using node v24.11.1 (npm v11.6.2)
如果切换的目标版本还没安装,nvm 会提醒你要安装:
$ nvm use lts/krypton
N/A: version "lts/krypton -> v24.14.0" is not yet installed.
You need to run `nvm install lts/krypton` to install and use it.
通过 nvm 安装 Node.js 時,nvm 会将不同的 Node.js 版本儲存在 ~/.nvm/versions/node/vX.X.X,然后再修改 $PATH,将指定版本的 Node.js 路径加入:在 nvm 的各个 Node.js 版本安装的全部程序都会在各自版本的目录内安装,所以在切换至新安装的 Node.js 版本后需要重新安装,也因为如此,不同版本间的程序不会有兼容问题。
current
察看目前使用版本
如果忘記自己切换到哪个版本,可以用 current 指令:
$ nvm current
v24.11.1
run
直接执行 Node.js
如果要直接执行Node.js,可以使用下面指令:
$ nvm run node
Running node v25.8.0 (npm v11.11.0)
Welcome to Node.js v25.8.0.
Type ".help" for more information.
>
exec
指定要执行的 Node.js 版本
$ nvm exec 25.8.0 node
Running node v25.8.0 (npm v11.11.0)
Welcome to Node.js v25.8.0.
Type ".help" for more information.
>
which
察看 Node.js 的安装路径
执行下面指令可以查看特定版本的 Node.js 的安装路径:
$ nvm which 25.8.0
/Users/duoli/.nvm/versions/node/v25.8.0/bin/node
alias
察看別名、设定別名
如下图有些版本的文字是紅色或是显示 N/A,就代表该版本未在电脑安装:
默认别名可以取代版本号:
node:安装最新版的 Node.jsiojs:安装最新版的 io.jsstable:此 alias 已弃用,僅適用於 v0.12 以及更舊版,目前改為nodealiasunstable:此 alias 為 v0.11,最后一個 “unstable” (不穩定) Node release,在 v1.0 之后的版本都是稳定版 (in SemVer, versions communicate breakage, not stability)
可在下面这些指令使用以上预设別名:
nvm installnvm usenvm runnvm execnvm which- … 等
察看別名
$ nvm ls
-> v16.20.2
v18.18.0
default -> 16 (-> v16.20.2)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v18.18.0) (default)
stable -> 18.18 (-> v18.18.0) (default)
lts/* -> lts/hydrogen (-> v18.18.0)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2
lts/hydrogen -> v18.18.0
设定別名
$ nvm alias titan-test v10.15.3 * ?
titan-test -> v10.15.3
接著用 nvm alias 指令就會看到刚刚新增的別名所对应的 Node.js 版本:SHELL
$ nvm alias * ?
titan-test -> v10.15.3
default -> v10.16.3
node -> stable (-> v12.8.1) (default)
stable -> 12.8 (-> v12.8.1) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/erbium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.2 (-> N/A)
lts/dubnium -> v10.17.0 (-> N/A)
lts/erbium -> v12.13.0 (-> N/A)
FAQ
卸载 Nvm
基本上,需要反向执行 install.sh中的步骤-从 ~/.bash_profile(和/或 ~/.profile) 中删除所有 nvm 注册,然后重新打shell 如果是 nvm 失效, 只需从 .bash_profile 或 .profile 中删除NVM命令就足够, 如果你有其他的 node 执行环境, 则也需要删除, 则需要执行如下命令
$ rm -rf ~/.nvm
Jenkins 中应用
在 Jenkins 中应用需要执行如下命令
. ~/.nvm/nvm.sh
更新记录
2026年03月10日
- 更新贴图 / 验证命令输出情况
2025年11月05日
- 更新最新的版本号
- 更新处理结构
2023-11-02
- 增加国内源的访问