Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,让开发者能在服务器端执行 JavaScript 代码。而 npm 是 Node.js 的默认包管理器,用于发布和安装 JavaScript 包(即 Node 模块)。当你从 Node.js 官网下载安装程序时,npm 会一并安装到你的系统中。不过,Node.js 和 npm 各自独立迭代,你可以分别将它们更新到最新版本。本文将详细介绍如何更新 Node.js 和 npm。

博主博客

如何更新 Node.js

更新 Node.js 主要有三种方式:使用 npm 的 n 模块、使用 Node 版本管理工具 nvm,或者直接下载最新的二进制安装包。

1. 使用 npm 的 n 模块更新 Node

n 是一个轻量级的 Node 版本管理工具,通过 npm 全局安装后,可以方便地安装和切换 Node 版本。

操作步骤:

  1. 清理 npm 缓存(可选)
    为了避免缓存问题,可以先清理 npm 缓存:

    npm cache clean -f
    
  2. 全局安装 n 模块

    npm install -g n
    

    由于 n 需要管理全局的 Node 版本,必须全局安装。

  3. 安装新的 Node 版本

    • 安装最新的长期支持版(LTS):
      n lts
      
    • 安装最新的当前版(Current):
      n latest
      
    • 安装指定版本(例如 20.11.0):
      n 20.11.0
      
  4. 删除旧版本(可选)
    n 会保留已安装的多个版本,你可以通过以下命令清理旧版本的缓存,只保留当前使用的版本:

    n prune
    

适用场景:适合已安装 Node.js 且不想额外安装版本管理工具的用户,操作简单,但需要 sudo 权限(Linux/macOS)。

2. 使用 NVM(Node Version Manager)更新 Node

NVM 是一个更强大的 Node 版本管理工具,允许你在同一台机器上安装和切换多个 Node 版本,非常适合需要测试不同版本兼容性的开发者。

安装 NVM

  • Linux/macOS:运行安装脚本
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
    
    安装完成后,重启终端或执行 source ~/.bashrc 使配置生效。
  • Windows:可使用 nvm-windows

使用 NVM 更新 Node

  1. 查看可安装的版本

    nvm ls-remote          # Linux/macOS
    nvm list available     # Windows
    
  2. 安装最新版本

    nvm install node       # 安装最新 Current 版
    nvm install --lts      # 安装最新 LTS 版
    nvm install 18.19.0    # 安装指定版本
    
  3. 切换使用新版本

    nvm use 20.11.0
    
  4. 设置默认版本(新终端自动使用)

    nvm alias default 20.11.0
    
  5. 卸载旧版本

    nvm uninstall 16.20.0
    

适用场景:需要频繁切换 Node 版本、测试多版本兼容性的开发者。NVM 将每个版本的全局包隔离,避免冲突。

3. 直接下载最新安装包

如果你不需要管理多个版本,直接从官网下载安装程序是最简单直接的方式。

操作步骤

  1. 访问 Node.js 官网
  2. 选择适合你操作系统的 LTS 版或 Current 版安装包(.msi、.pkg 或 .exe)。
  3. 运行安装程序,它会自动覆盖旧版本(Windows 可能会提示修复或卸载,按提示操作即可)。
  4. 安装完成后,打开终端验证版本:
    node -v
    

注意:这种方式会全局替换当前 Node 版本,之前通过 npm 全局安装的包可能需要重新安装(通常安装程序会保留全局包,但建议检查一下)。

如何更新 npm

npm 会随着 Node.js 一起安装,但你可以单独将其更新到最新版本。

使用 npm 自更新命令

npm install -g npm@latest

该命令会全局安装最新版本的 npm。在 macOS 或 Linux 上,如果遇到权限错误,可能需要加上 sudo

sudo npm install -g npm@latest

验证更新

更新后,检查 npm 版本:

npm -v

验证升级是否成功

无论采用哪种方式,升级后都应确认版本正确:

  • 查看 Node 版本:node -v
  • 查看 npm 版本:npm -v

如果项目中使用了全局安装的包,建议重新安装或重建,以确保兼容性:

npm list -g --depth=0   # 查看全局包列表
npm rebuild             # 重新编译原生模块

常见问题及解决

  • npm 版本未随 Node 更新
    如果升级 Node 后 npm 版本仍较旧,可以手动运行 npm install -g npm@latest 更新。

  • 全局包丢失或无法使用
    使用 NVM 时,不同版本的 Node 拥有独立的全局包目录,需要在新版本中重新安装必要的全局包。可通过导出旧版本的包列表来批量安装。

  • 原生模块编译失败
    某些依赖 C++ 的包(如 bcryptsharp)在 Node 升级后需要重新编译。运行 npm rebuild 或删除 node_modulespackage-lock.json 后重新安装即可。

  • 权限问题
    推荐使用 NVM 或 n 这类版本管理工具,它们会将全局包安装在用户目录下,避免 sudo 权限问题。