安装 Node.js

通过 fnm 安装并管理 Node.js 24 LTS,同时验证 npm 和项目所需的运行环境。

Node.js 用来运行 Saavo 的开发服务器、构建命令和测试,npm 用来安装项目依赖。Saavo 要求 Node.js 22.13.0 或更高版本,推荐使用 Node.js 24 LTS。

本文使用 fnm 管理 Node.js。与直接安装固定版本相比,fnm 更方便升级、切换和清理,也能避免不同项目需要不同 Node.js 版本时互相影响。

本文核对的版本

本文按照 2026 年 8 月的 fnm 1.39.0 编写。Node.js 24(Krypton)目前是 LTS 版本,Node.js 26 仍是 Current 版本。

先检查现有版本

打开终端,运行:

node -v
npm -v
fnm --version
  • node -v 输出的版本为 22.13.0 或更高,并且 npm -v 也能正常输出:现有环境已经满足要求,不必为了使用 fnm 重装 Node.js。
  • Node.js 版本低于 22.13.0,或者命令不存在:继续安装 fnm 和 Node.js 24。
  • 只有 fnm 命令不存在:说明当前 Node.js 可能是用其他方式安装的。只要版本符合要求,可以继续使用。

安装 fnm

根据操作系统选择一种方式。

Windows

打开 PowerShell 或 Windows Terminal:

winget install --id Schniz.fnm -e

fnm 安装成功

也可以使用 scoop install fnm、choco install fnm,或从 fnm Releases 下载与你的处理器匹配的版本。几种方式任选一种,不要重复安装。

当前 WinGet 中的 fnm 是便携式软件包,安装时会注册 fnm 命令。安装完成后关闭所有终端窗口,再打开一个新的 PowerShell,运行:

fnm --version

能够显示版本号就说明安装已经完成,不需要手动把 fnm 加入 PATH,也不用为了识别 fnm 命令修改 $PROFILE。

macOS

使用 Homebrew 安装:

brew install fnm

Homebrew 会安装 fnm 命令,但不会替你修改 Bash 或 Zsh 的启动文件。后面仍要完成 Shell 初始化。

Linux

官方安装脚本需要系统已安装 curl 和 unzip:

curl -fsSL https://fnm.vercel.app/install | bash

官方安装脚本会根据 $SHELL 自动修改 ~/.bashrc、~/.zshrc 或 Fish 配置。执行结束后按照终端提示重新打开终端或运行 source 命令即可,不要再重复添加同一段配置。如果脚本无法识别 Shell,或者安装时使用了 --skip-shell,才需要手动配置。

确认 Shell 初始化

这里需要区分两件事:

  • 运行 fnm --version,只是在确认终端能找到 fnm 程序;
  • 运行 node、切换 Node.js 版本以及读取 .nvmrc,需要当前 Shell 执行 fnm env。

Windows 使用 WinGet 安装后,第一项通常已经自动完成,第二项仍需要 Shell 初始化。macOS 使用 Homebrew 时也需要初始化。Linux 使用官方脚本时通常已经自动写好配置,先检查对应文件,缺少时再添加,不要重复写入。

把与你当前 Shell 对应的初始化命令放到配置文件末尾:

# 添加到 $PROFILE
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

PowerShell 如果还没有配置文件,可以先创建并打开:

if (-not (Test-Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
notepad $PROFILE

保存后关闭所有终端窗口,再重新打开。此时不仅要确认 fnm 命令存在,还要确认 Shell 已经加载 fnm 环境:

fnm --version
fnm current

尚未安装 Node.js 时,fnm current 没有版本可显示是正常的。下一步安装并启用 Node.js 后,再用 node -v 做最终确认。

为什么要初始化 fnm 环境

fnm 安装成功后需要初始化 Shell 环境,否则无法正常使用部分 fnm 命令。例如下面就未初始化的情况:

未初始化 fnm 环境

安装 Node.js 24 LTS

执行:

fnm install 24
fnm default 24
fnm use 24

三条命令分别负责安装 Node.js 24、把它设为新终端的默认版本,以及立即切换当前终端。fnm 会同时提供该版本自带的 npm,不需要单独安装 npm。

验证 Node.js 和 npm

重新打开终端,再运行:

fnm --version
node -v
npm -v

node -v 应输出 v24.x,npm -v 应输出版本号。具体小版本会随 Node.js 24 的维护版本更新,不必与截图完全一致。

Node.js 和 npm 版本号

Wrangler 不需要全局安装

Wrangler 已包含在 Saavo 的项目依赖中。项目下载并执行 npm install 后,通过 npx wrangler 使用即可,不要再执行全局安装。Cloudflare 授权方法见上一页的项目安装后登录 Wrangler。

Windows 提示无法加载 npm.ps1

如果 node -v 正常,但在 PowerShell 中运行 npm -v 出现下面的错误:

npm.ps1 cannot be loaded because running scripts is disabled on this system
PSSecurityException

npm.ps1 无法加载

这不表示 npm 安装失败。Node.js 已经附带 npm,只是 PowerShell 执行 npm 时找到了 npm.ps1,而当前执行策略不允许运行 PowerShell 脚本。错误路径中出现 fnm_multishells 也是正常的,这是 fnm 为当前终端提供 Node.js 版本的入口。

先运行下面的命令确认 npm 已经安装:

npm.cmd -v

能够输出版本号,就不需要重新安装 Node.js 或 npm。临时使用时,可以在 PowerShell 中明确调用 npm.cmd 和 npx.cmd:

npm.cmd install
npx.cmd wrangler --version

如果这是自己的开发电脑,可以先查看各范围的执行策略:

Get-ExecutionPolicy -List

然后只为当前用户启用 RemoteSigned:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

确认修改后,关闭 PowerShell 并重新打开,再运行 npm -v 和 npx -v。不要为了省事把整台电脑改成 Unrestricted,也不要永久使用 Bypass。

公司电脑可能由组策略管理

如果 MachinePolicy 或 UserPolicy 已经设置,当前用户的配置可能不会生效。此时继续使用 npm.cmd、改用命令提示符,或联系管理员处理;不要尝试绕过组织的安全策略。

常见问题

  • 安装后仍提示找不到 fnm:关闭所有终端窗口再打开。如果仍然无效,检查 fnm 是否已经加入 PATH。
  • fnm 能运行,但 node 仍然不存在:通常是 Shell 初始化命令没有生效。检查 $PROFILE、~/.bashrc 或 ~/.zshrc,然后重新打开终端。
  • 打开新终端后又变回旧版本:执行 fnm default 24,确认 Shell 配置中保留了 fnm env --use-on-cd。
  • 电脑里有多个 Node.js:Windows 运行 where.exe node,macOS 或 Linux 运行 which -a node,检查旧安装是否排在 fnm 前面。