用 nvm 装 Node.js 是最稳妥的选择:它支持多版本共存、不干扰系统路径、无需 sudo,但需正确安装、source 配置、执行 nvm use 或设 default 版本,并注意各版本 npm 和全局模块相互隔离。

用 nvm 装 Node.js 是最稳妥的选择
Linux 下手动编译或从官网下二进制包装 Node,后续换版本、管理全局模块、处理权限问题全是坑。直接上 nvm(Node Version Manager),它专为多版本共存设计,不碰系统 /usr/bin,也不需要 sudo npm。
实操建议:
- 用官方安装脚本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash(注意核对最新版 tag) - 装完重启终端,或运行
source ~/.bashrc(或~/.zshrc,看你的 shell) - 验证:
nvm --version有输出,且which node指向~/.nvm/versions/node/...才算生效 - 别用
apt install nvm—— Ubuntu 官方源里的nvm是个假货,叫node-version-manager,根本不是同一个东西,nvm ls-remote会报错
nvm install 和 nvm use 的配合逻辑
nvm install 只是下载并解压版本到本地,不会自动激活;nvm use 才真正把 node 和 npm 的路径注入当前 shell。很多人装完以为好了,一查 node -v 还是旧版,就是因为漏了 use。
常见错误现象:
-
nvm install 18.19.0后,node -v显示还是 16.x → 忘了nvm use 18.19.0 -
nvm use 18.19.0提示 “N/A”,但nvm ls确实列出来了 → 当前 shell 没加载nvm,重跑source ~/.nvm/nvm.sh - 新开终端后版本又变回系统默认 → 没设默认版本,运行
nvm alias default 18.19.0
切换版本时 npm 和全局模块怎么算
每个 Node 版本自带独立的 npm 二进制和 global 目录,nvm use 18.19.0 后,npm install -g 装的东西只对这个版本可见。这不是 bug,是设计使然。
使用场景与注意事项:
- 用
nvm use 20.11.0后装的pnpm,切回 18.19.0 就找不到 → 每个版本得单独装一次,或改用npx pnpm -
npm config get prefix输出的是~/.nvm/versions/node/v18.19.0这类路径,说明全局模块没混在一起 - 别手动改
~/.nvm/versions/node/*/lib/node_modules权限 ——nvm默认用当前用户权限管理,sudo npm会污染路径,导致后续nvm use失效
遇到 command not found: node 先查这三处
不是所有“装了没反应”都是 nvm 没装好,更多是环境变量断在中间环节。
排查顺序:
- 运行
echo $PATH,确认输出里有~/.nvm/bin(注意:不是~/.nvm) - 检查
~/.bashrc或~/.zshrc末尾是否真有这两行:export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" -
nvm ls能列出版本,但which node无输出 → 说明nvm.sh加载了,但没执行nvm use或nvm alias default,当前 shell 还没绑定任何版本
复杂点在于 shell 配置文件可能被多个地方覆盖(比如 oh-my-zsh 插件、/etc/profile 干预),nvm 不是“装完就灵”的工具,它依赖你 shell 的初始化链路完整跑通。

















