nvm切换node版本
基本用法
NVM 提供了简单而强大的命令来切换不同的 Node.js 版本。最基本的命令是 nvm use
,它允许你激活已安装的 Node.js 版本。
查看可切换的node版本
使用前可以使用 nvm ls
命令查看已安装的 Node.js 版本。
nvm ls
切换版本的不同方式
使用完整版本号
你可以指定完整的版本号:
例如,要使用 Node.js v24.0.2:
$ nvm use 24.0.2
Now using node v24.0.2 (64-bit)
使用主版本号
只需指定主版本号,NVM 将使用该主版本的最新已安装版本:
$ nvm use 14
Using node v14.17.6 (npm v6.14.15)
使用别名
NVM 内置了几个特殊别名:
# 使用最新稳定版
$ nvm use node
Now using node v16.14.0 (npm v8.3.1)
# 使用最新 LTS 版本
$ nvm use lts/*
Now using node v16.13.2 (npm v8.1.2)
# 使用特定 LTS 版本
$ nvm use lts/gallium
Now using node v16.13.2 (npm v8.1.2)
指定架构(仅Windows)
在 Windows 系统上,你可以指定使用 32 位或 64 位版本:
$ nvm use 14.17.0 32
$ nvm use 16.14.0 64
使用 .nvmrc 文件自动切换版本
在项目根目录创建一个名为 .nvmrc
的文件,文件内容为 Node.js 版本号。然后,只需运行 nvm use
命令(无需参数),NVM 将读取 .nvmrc
文件中的版本并自动切换到该版本。
- 创建
.nvmrc
文件:
$ echo "16.14.0" > .nvmrc
- 在项目目录中运行:
$ nvm use
Found '/path/to/project/.nvmrc' with version <16.14.0>
Now using node v16.14.0 (npm v8.3.1)
.nvmrc
文件内容示例:
16.14.0
- 精确版本16
- 主版本的最新版本lts/*
- 最新的 LTS 版本node
- 最新的 Node.js 版本
设置默认 Node.js 版本
你可以设置一个默认的 Node.js 版本,每次打开新终端时会自动使用该版本:
$ nvm alias default 16.14.0
default -> 16.14.0 (-> v16.14.0)
这样,即使你没有运行 nvm use
命令,也会默认使用指定的版本。
切换版本时的注意事项
全局包管理
切换 Node.js 版本时,全局安装的包不会自动迁移。每个 Node.js 版本有自己独立的全局包集合。
如果你希望将一个版本的所有全局包复制到另一个版本,可以使用:
# 从 v14.17.0 复制全局包到 v16.14.0
$ nvm install 16.14.0 --reinstall-packages-from=14.17.0
临时使用另一版本
如果你只想临时运行一个命令,而不切换当前会话的 Node.js 版本,可以使用 nvm run
:
$ nvm run 14.17.0 app.js
查看当前使用的版本
要检查当前使用的 Node.js 版本:
$ nvm current
v16.14.0
常见问题及解决方案
版本切换后环境变量丢失
问题:切换版本后,之前设置的 NODE_PATH 等环境变量可能失效。 解决方案:在 .bashrc
或 .zshrc
文件中添加环境变量设置。
自动切换版本
如果希望在进入项目目录时自动切换到 .nvmrc
文件指定的 Node.js 版本,可以在 .bashrc
或 .zshrc
中添加以下内容:
对于 Bash:
cdnvm() {
command cd "$@" || return $?
nvm_path="$(nvm_find_up .nvmrc | tr -d '\n')"
if [ -e "$nvm_path/.nvmrc" ]; then
declare default_version;
default_version="$(nvm version default)"
declare nvmrc_version;
nvmrc_version="$(nvm version "$(cat "$nvm_path/.nvmrc")")"
if [ "$nvmrc_version" = "N/A" ]; then
echo "Warning: $(cat "$nvm_path/.nvmrc") version not installed"
elif [ "$nvmrc_version" != "$default_version" ]; then
nvm use > /dev/null
fi
fi
}
alias cd='cdnvm'
对于 Zsh:
autoload -U add-zsh-hook
load-nvmrc() {
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
最佳实践
- 为每个项目创建
.nvmrc
文件:确保团队成员使用相同版本的 Node.js - 定期更新到 LTS 版本:LTS 版本更稳定,适合生产环境
- 使用语义化版本号:在
.nvmrc
文件中指定精确版本,避免兼容性问题 - 设置合适的默认版本:为日常开发设置一个默认的 Node.js 版本
nvm use 命令参数说明
参数 | 说明 |
---|---|
<版本号> | 指定要使用的 Node.js 版本 |
node | 使用最新版本的 Node.js |
lts/* | 使用最新的长期支持版本 |
lts/<名称> | 使用特定的长期支持版本 |
<版本号> <架构> | (仅Windows) 指定使用 32 或 64 位版本 |
通过这些方法,你可以轻松地在不同的 Node.js 版本之间切换,满足不同项目的开发需求。