Skip to content

Ubuntu 22.04 安装 Node.js 18

核心问题

在 Ubuntu 22.04 上通过官方推荐方法安装 Node.js 18 时,系统默认安装的是较旧的 v12.22.9 版本而非目标版本。用户提供的典型错误场景如下:

bash
sudo bash nodesource_setup.sh
sudo apt install nodejs
# 实际安装结果:v12.22.9

此问题源于 Ubuntu 22.04 默认仓库包含旧版 Node.js 且未能正确替换为 Nodesource 提供的新版本源。

优选解决方案

方法一:使用 Node Version Manager (推荐)

此方法允许灵活安装和管理多个 Node.js 版本,适合开发环境。

1. 安装 Node Version Manager

bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

2. 激活 NVM

重新打开终端或运行:

bash
source ~/.bashrc  # 或 source ~/.zshrc

3. 查看可用版本

bash
nvm ls-remote

4. 安装指定版本

bash
nvm install 18  # 自动安装LTS最新版
# 或指定确切版本
nvm install 18.20.2

5. 验证安装

bash
node --version  # 应显示 v18.x

版本管理示例

命令功能
nvm list列出已安装版本
nvm use 16切换到Node.js 16
nvm default 18设置默认版本为18

使用提示

  • 每个终端会话需通过 nvm use 指定活动版本
  • 使用 nvm alias default 18 设置默认版本避免重复选择

方法二:通过 Nodesource 仓库安装

适合需要系统级单一版本的生产环境部署。

关键步骤

请先移除旧版 Node.js 避免冲突:

bash
sudo apt purge nodejs npm
sudo apt autoremove

1. 添加 Nodesource 仓库

# 对于 Node.js 18
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# 可选: 手动添加仓库密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

2. 执行安装命令

bash
sudo apt update
sudo apt install -y nodejs

3. 验证安装

bash
node -v  # 应输出 v18.x
npm -v   # 关联npm同时安装

解决方案对比分析

方法适用场景优点局限性
NVM多项目开发/版本测试无冲突安装多版本需每用户单独配置
Nodesource生产环境/服务器部署系统全局可用同一环境仅支持单版本

常见问题排查

问题:Nodesource安装后仍为旧版

解决方案:

bash
# 清理旧配置
sudo rm /etc/apt/sources.list.d/nodesource.list*
sudo rm -rf /etc/apt/keyrings/nodesource.gpg

# 重新添加仓库
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt update
sudo apt install --reinstall nodejs

问题:NVM命令无法识别

解决方案:

bash
# 确保安装后执行
exec $SHELL
source ~/.bashrc
# 或检查 .zshrc/.profile

环境清理方法

完整卸载Node.js及关联组件:

bash
# 通过APT安装的版本
sudo apt purge nodejs npm
sudo apt autoremove

# 通过NVM安装的版本
rm -rf ~/.nvm
sed -i '/nvm/d' ~/.bashrc ~/.zshrc

最佳实践建议

  • 开发环境优先使用 NVM 避免权限问题
  • 生产环境推荐 Nodesource + PM2 进程管理
  • 定期升级版本 nvm install --lts=Galliumsudo apt upgrade nodejs