Windows 下 fnm 安装使用教程

1. 安装 fnm

方式一:使用 winget(推荐)

1
winget install Schniz.fnm

方式二:使用 Scoop

1
scoop install fnm

方式三:使用 Chocolatey

1
choco install fnm

方式四:手动下载
从 GitHub Releases 下载:https://github.com/Schniz/fnm/releases

2. 配置环境变量(重要!)

安装后必须配置 shell 集成,否则 fnm use 切换版本后不会生效。

PowerShell 配置

1
2
# 编辑配置文件
notepad $PROFILE

添加以下内容:

1
fnm env --use-on-cd --shell power-shell | Out-String | Invoke-Expression

如果没有配置文件,先创建:

1
New-Item -Path $PROFILE -Type File -Force

CMD 配置

CMD 不支持自动加载,需要手动设置环境变量。安装时选择”Add to PATH”选项,或手动添加:

1
2
3
4
5
# 查看 fnm 安装路径
where fnm

# 将 fnm 的 node 路径添加到 PATH(每次切换后需重新打开终端)
fnm env --shell cmd

Git Bash 配置

编辑 ~/.bashrc 文件:

1
2
# ~/.bashrc
eval "$(fnm env --use-on-cd --shell bash)"

如果没有 .bashrc,创建它:

1
echo 'eval "$(fnm env --use-on-cd --shell bash)"' >> ~/.bashrc

3. 切换版本后不生效的解决方案

问题原因

fnm use 只修改当前 shell 会话的 PATH,新打开的终端窗口不会继承这个修改。

解决方案

方案一:使用 fnm default 设置全局默认版本

1
fnm default 20

然后重新打开终端。

方案二:配置 shell 集成(推荐)
按照上面的配置步骤,为每个终端配置自动加载。

方案三:手动刷新环境变量

1
2
# PowerShell
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

方案四:使用 fnm 的多 shell 支持

1
2
3
# 在当前会话中切换并生效
fnm use 20
node --version # 应该显示 v20.x.x

4. 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看可安装的 Node.js 版本
fnm list-remote

# 安装指定版本
fnm install 20
fnm install 18.17.0
fnm install --lts

# 查看已安装版本
fnm list

# 切换版本(当前会话生效)
fnm use 20
fnm use 18.17.0

# 设置默认版本(新终端生效)
fnm default 20

# 查看当前版本
fnm current

# 卸载版本
fnm uninstall 18.17.0

5. 项目级配置

在项目根目录创建 .node-version 文件:

1
echo "20" > .node-version

或创建 .nvmrc 文件:

1
echo "18" > .nvmrc

配置后进入目录会自动切换版本(需要配置 shell 集成)。

6. 验证安装

1
2
3
fnm --version
node --version
npm --version

7. 常见问题

Q: 切换版本后 node 命令找不到?
A: 重新打开终端,或配置 shell 集成。

Q: 多个终端版本不一致?
A: 每个终端都需要独立配置 shell 集成。

Q: 如何查看当前使用的版本?
A: 运行 fnm currentnode --version

8. 与 nvm-windows 的区别

特性 fnm nvm-windows
速度 快(Rust 编写) 较慢
跨平台 支持 仅 Windows
项目级版本 支持 不支持
安装方式 原生 符号链接

fnm 更现代、更快,推荐使用。