一台设备上如何使用多个 Node.js 版本
一台机器管理多个 Node 版本用 nvm:nvm install 22 / nvm install 24 安装多版本,nvm use 切换,nvm alias default 设默认。项目内可用 .nvmrc 声明版本,nvm-sh 需运行 nvm use 或配置自动切换 hook;精确锁定需完整版本号,Windows 用 nvm-windows。
用 nvm(Node Version Manager)就能在同一台设备上安装并切换任意多个 Node 版本:nvm install 22 和 nvm install 24 并存,nvm use 24 切换当前 shell 使用的版本,nvm alias default 24 设 nvm 初始化的新 shell 默认版本。在项目根目录放一个 .nvmrc 文件(内容如 24),进入目录后 nvm use 即可自动切到项目要求的版本。
nvm 常用命令
nvm install 22 # 装 Node 22 最新小版本
nvm install --lts # 装最新 LTS
nvm ls # 列出本机已装版本
nvm ls-remote # 列出可安装的远程版本
nvm use 22 # 当前 shell 切到 22
nvm alias default 24 # 新终端默认用 24
nvm current # 查看当前版本
项目级版本锁定:.nvmrc
echo "24" > .nvmrc
nvm use # 读取 .nvmrc 自动切换
24 只是 major 选择器,不是精确版本锁定;要可复现须固定完整版本并让 CI 实际读取。engines 在 npm 中通常只是提示,强制与否取决于配置。
Windows 与备选方案
- nvm-windows:
nvm install 24.11.0/nvm use 24.11.0,注意要用管理员权限的终端; - n:Linux/macOS 上更轻量的替代品,交互式切换;
- volta / fnm:Rust 写的新一代管理器,可在正确安装 shim/shell hook 后按目录切版本,行为依工具配置;
- Docker:每个项目用不同的
node:xx镜像,隔离所选运行环境,但卷、网络、宿主内核与共享资源仍有边界。
常见问题(FAQ)
Q:切换版本后全局包要重装吗?
nvm-sh 下每个版本的 global node_modules 独立;nvm-windows 是不同实现,不要直接照搬 shell/切换行为。用 nvm install 24 --reinstall-packages-from=18 可以从旧版本迁移全局包。
Q:nvm use 只影响当前终端吗?
是的,只改当前 shell 的 PATH。想让所有新终端默认用某版本,必须 nvm alias default <版本>。
Q:IDE 里终端版本不对怎么办?
IDE 启动的终端会重新加载 shell 配置,确认 nvm 初始化脚本写在 ~/.bashrc 或 ~/.zshrc 中,并重启 IDE;部分 IDE 还需在项目设置里手动指定 Node 解释器路径。