Windows 下手动安装与配置 fnm(Fast Node Manager)完整指南
fnm(Fast Node Manager)是一个用 Rust 编写的 Node.js 版本管理工具,速度极快,支持跨平台,是 nvm 的优秀替代品。本文记录了在 Windows 上通过 GitHub 下载 zip 包手动安装 fnm,并在 PowerShell、CMD、Git Bash 三种终端中完整配置的全过程。
一、手动下载安装 fnm
1. 下载 fnm-windows.zip
访问 fnm 的 GitHub Releases 页面:
https://github.com/Schniz/fnm/releases找到最新版本,在 Assets 中下载 fnm-windows.zip。
2. 解压到目标目录
将下载的 zip 文件解压到你想要的目录,例如:
E:\Develop\fnm-windows\解压后,该目录下会有 fnm.exe 文件。
3. 将 fnm 添加到 PATH
打开 系统属性 → 高级系统设置 → 环境变量,在用户变量或系统变量中找到 Path,点击编辑,新建一项,填入 fnm.exe 所在的目录:
E:\Develop\fnm-windows保存后重新打开终端,输入 fnm --version 验证是否安装成功。
二、配置环境变量
除了 PATH,还需要配置两个环境变量来优化 fnm 的使用体验。
1. 配置 FNM_DIR(自定义安装目录)
默认情况下,fnm 会把下载的 Node.js 版本放在 %APPDATA%\fnm 下。如果你想改到其他盘符(比如 E 盘),可以设置 FNM_DIR 环境变量。
在 系统属性 → 环境变量 中新建一个变量:
变量名:FNM_DIR
变量值:E:\Develop\fnm-windows
设置后,Node.js 各版本会安装到:
E:\Develop\fnm-windows\node-versions\v24.21.0\installation💡 也可以只在 PowerShell 的 $PROFILE 中临时设置,但在系统环境变量中设置能保证所有终端都生效。2. 配置 FNM_NODE_DIST_MIRROR(Node 下载镜像)
fnm 默认从 Node.js 官方源下载,国内访问可能较慢。可以设置 FNM_NODE_DIST_MIRROR 环境变量使用淘宝镜像加速。
在 系统属性 → 环境变量 中新建一个变量:
变量名:FNM_NODE_DIST_MIRROR
变量值:https://npmmirror.com/mirrors/node/
设置后,fnm install 会从该镜像下载 Node.js,速度会明显提升。
3. 验证环境变量
重新打开一个终端,执行:
fnm env在输出中应该能看到:
$env:FNM_DIR = "E:\Develop\fnm-windows"
$env:FNM_NODE_DIST_MIRROR = "https://npmmirror.com/mirrors/node/"
三、在 PowerShell 中配置
1. 打开或创建配置文件
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
notepad $PROFILE2. 添加初始化命令
在文件末尾添加:
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression--use-on-cd 的作用是:当切换到包含 .node-version 或 .nvmrc 文件的目录时,自动切换到对应 Node 版本。
3. 重新加载配置
. $PROFILE4. 验证
fnm install v24.21.0
fnm use v24.21.0
node -v⚠️ 如果提示“禁止运行脚本”
执行一次:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser四、在 CMD 中配置
CMD 没有原生的配置文件机制,但可以通过注册表的 AutoRun 项实现自动初始化。
1. 生成 CMD 初始化脚本
先在 PowerShell 中创建目录并生成脚本文件:
New-Item -ItemType Directory -Path "$env:APPDATA\fnm" -Force
fnm env --use-on-cd --shell cmd | ForEach-Object { '@' + $_ } | Out-File -FilePath "$env:APPDATA\fnm\fnm-init.cmd" -Encoding ASCII注意:如果%APPDATA%\fnm目录不存在会报DirectoryNotFoundException,所以要先New-Item创建。
2. 设置 CMD 的 AutoRun
reg add 'HKCU\Software\Microsoft\Command Processor' /v AutoRun /t REG_SZ /d "call $env:APPDATA\fnm\fnm-init.cmd" /f3. 验证
关掉所有 CMD 窗口,重新打开一个新的,输入:
node -v
如果能看到版本号,说明配置成功。
🔧 临时手动激活(不想改注册表时)
在任意 CMD 窗口里执行:
FOR /f "tokens=*" %z IN ('fnm env --use-on-cd') DO CALL %z(写在 .bat 文件里时,%z 要写成 %%z)
五、在 Git Bash 中配置
Git Bash 与 Linux 的 bash 类似,通过编辑 ~/.bashrc 实现。
1. 编辑 .bashrc
nano ~/.bashrc2. 添加初始化命令
eval "$(fnm env --use-on-cd --shell bash)"3. 保存并生效
按 Ctrl+X,再按 Y 和回车保存。然后:
source ~/.bashrc或者直接重开一个 Git Bash 窗口。
4. 验证
node -v
六、常见问题
❌ fnm env was not applied in this context
说明当前终端会话没有执行过 fnm env 的输出。解决方式是确认配置文件已正确写入并重新加载,或者手动执行一次初始化命令。
❌ Out-File : 未能找到路径...fnm-init.cmd
说明目标目录不存在。先执行 New-Item -ItemType Directory -Path "$env:APPDATA\fnm" -Force 创建目录。
⚠️ PATH 中出现多个 fnm_multishells 目录
通常是配置文件被多次加载导致。虽然不影响使用,但会让 PATH 变长。可以检查 $PROFILE 里是否写了两遍初始化命令。
⚠️ 中文路径乱码
Windows 下 PowerShell 处理含中文的路径时偶尔会显示乱码,一般不影响功能,但如果某个工具找不到,可以检查是否是这类编码问题。
⚠️ 路径冲突
如果系统里曾经装过 nvm 或独立版 Node.js,PATH 中可能残留旧的 Node 路径。建议清理掉不再使用的,避免和 fnm 管理的版本冲突。
七、fnm 常用命令
| 命令 | 说明 |
|---|---|
fnm --version | 查看 fnm 版本 |
fnm list / fnm ls | 列出已安装的所有 Node 版本 |
fnm list-remote | 列出所有可远程安装的版本 |
fnm install <version> | 安装指定版本,如 fnm install v24.21.0 |
fnm install --lts | 安装最新的 LTS 版本 |
fnm use <version> | 在当前会话切换到指定版本 |
fnm default <version> | 设置默认版本(新终端打开时使用) |
fnm current | 查看当前正在使用的版本 |
fnm uninstall <version> | 卸载指定版本 |
fnm alias <version> <name> | 给版本起别名,如 fnm alias v24.21.0 default |
fnm env | 输出当前 shell 的环境变量设置 |
fnm env --use-on-cd | 输出环境变量并启用目录切换自动换版本 |
fnm env --shell powershell | 指定输出为 PowerShell 格式 |
fnm env --shell cmd | 指定输出为 CMD 格式 |
fnm env --shell bash | 指定输出为 bash 格式 |
fnm exec --using=<version> <command> | 用指定版本执行命令,如 fnm exec --using=v22.14.0 node -v |
fnm completions --shell <shell> | 生成 shell 自动补全脚本 |
典型工作流
# 安装并切换到 LTS
fnm install --lts
fnm use lts
# 为项目锁定版本(在项目根目录生成 .node-version)
node -v > .node-version
# 之后进入该目录时(已配置 --use-on-cd)自动切换
cd my-project
node -v总结
fnm 在 Windows 上手动安装的核心步骤是:下载 zip 包解压 → 将 fnm.exe 所在目录添加到 PATH → 配置 FNM_DIR 和 FNM_NODE_DIST_MIRROR 环境变量 → 让每个终端在启动时执行一次 fnm env 的输出。不同终端的区别只是“如何自动执行”:
- PowerShell →
$PROFILE+Invoke-Expression - CMD → 注册表
AutoRun+call - Git Bash →
~/.bashrc+eval
配好之后,fnm 就能在所有终端里无缝管理 Node.js 版本了。
评论