用 apt 装 Node.js 常装到过旧版本(如 10.x/12.x),因 Ubuntu/Debian 默认源优先稳定而非新特性;推荐使用 NodeSource 官方源安装 LTS 版本(如 20.x),三步完成:卸载旧包、添加源并导入签名、安装 nodejs(自动附带 npm);nvm 适合需频繁切换版本的开发者,但易因 PATH 或 shell 配置出错;npm 全局安装权限错误应通过配置用户级 prefix 解决,而非 sudo。

用 apt 装 Node.js 为什么经常装到太老的版本?
Ubuntu/Debian 默认源里的 nodejs 包通常卡在 10.x 或 12.x,连 npm 都可能没一起装。这不是 bug,是发行版策略:稳定压倒新特性,但对前端开发就是硬伤。
别直接 sudo apt install nodejs npm —— 除非你明确要维护一个五年不升级的后端服务。
- 查当前版本:
apt show nodejs | grep Version,大概率低于 18.x - 真正可用的 LTS 版本(如 20.x)得走官方源或
nodesource -
npm有时不随nodejs自动安装,得单独apt install npm,但版本也旧
用 nodesource 源装 20.x LTS 最稳的三步
这是目前 Linux 上最省心、更新及时、权限干净的方式。它把 Node.js 当成独立软件源维护,不和系统包混在一起。
按顺序执行,别跳步:
- 清掉旧包:
sudo apt remove nodejs npm(避免冲突) - 加源并导入签名:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - - 装正式包:
sudo apt install -y nodejs(npm会自动附带)
验证:node -v 应输出 v20.x.x,npm -v 输出 10.x.x 以上。注意:这个流程不碰 /usr/local,不会和手动编译安装打架。
nvm 适合什么人?什么时候反而添乱?
nvm 是 shell 层的版本管理器,适合需要频繁切换 Node.js 版本的人(比如同时维护多个老项目)。但它不是“更高级的安装方式”,而是另一套逻辑。
- 装法简单:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash,然后重启 shell - 装指定版本:
nvm install --lts(自动选当前 LTS),再nvm use --lts - 坑点:每次新开 terminal 都要
nvm use,否则node命令找不到;CI/CD 环境里容易漏配置 - 和系统级
apt安装共存时,PATH 顺序一错,which node就指向错的地方
装完发现 npm install 权限报错?别急着 sudo
典型错误是:Error: EACCES: permission denied, access '/usr/lib/node_modules'。这是 npm 默认全局路径设在系统目录导致的。
- 根本解法:改 npm 全局目录到用户空间:
mkdir ~/.npm-global && npm config set prefix '~/.npm-global' - 然后把
~/.npm-global/bin加进$PATH(写进~/.bashrc或~/.zshrc) - 之后所有
npm install -g都不会再碰/usr,也不用sudo - 别用
sudo npm install -g—— 这会让后续模块权限混乱,甚至破坏node_modules所有权
路径和权限问题藏得深,但只要第一次配对,后面基本不用管。很多人卡在这一步,其实是没意识到 npm 的全局安装默认不面向普通用户设计。











