Windows下使用fnm Node管理工具
相关网站
FNM(Fast Node Manager)是一个用 Rust 编写的现代化 Node.js 版本管理工具,以其快速的切换速度和跨平台支持而闻名。相比传统的版本管理工具,FNM 提供了更优的性能和更简洁的使用体验。
什么是FNM?
FNM 是一个快速简便的 Node.js 版本管理器,使用 Rust 构建,具有以下特点:
- ⚡ 极速切换:采用 Rust 编写,版本切换速度比传统工具快数倍
- 🌍 跨平台支持:完美支持 macOS、Linux 和 Windows
- 🔄 自动切换:支持进入项目目录时自动切换 Node.js 版本
- 📦 轻量级:安装包小,资源占用少
- 🛡️ 类型安全:Rust 的内存安全保证
与其他工具对比
| 特性 | FNM | NVM | N |
|---|---|---|---|
| 编写语言 | Rust | Bash | Node.js |
| 切换速度 | 🚀 极快 | 🐌 较慢 | 🚀 快 |
| 跨平台 | ✅ 完全支持 | ⚠️ Windows 有限 | ✅ 完全支持 |
| 自动切换 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 安装大小 | 📦 小 | 📦 中 | 📦 大 |
windows下载方式安装
直接在GitHub仓库中找到对应版本中的fnm-windows.zip进行点击下载。比如v1.39.0。
然后在想安装的目录下直接解压,得到一个可执行的二进制文件.exe。
下面需要配置环境变量(FNM_DIR={指向你解压的目录}),使其方便在任何位置都可以直接执行。
其他变量设置:
--node-dist-mirror <NODE_DIST_MIRROR>
<https://nodejs.org/dist/> mirror
[env: FNM_NODE_DIST_MIRROR]
[default: https://nodejs.org/dist]
--fnm-dir <BASE_DIR>
The root directory of fnm installations
[env: FNM_DIR]
--log-level <LOG_LEVEL>
The log level of fnm commands
[env: FNM_LOGLEVEL]
[default: info]
[possible values: quiet, error, info]
--arch <ARCH>
Override the architecture of the installed Node binary. Defaults to arch of fnm binary
[env: FNM_ARCH]
--version-file-strategy <VERSION_FILE_STRATEGY>
A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation
[env: FNM_VERSION_FILE_STRATEGY]
[default: local]
Possible values:
- local: Use the local version of Node defined within the current directory
- recursive: Use the version of Node defined within the current directory and all parent directories
--corepack-enabled
Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see <https://nodejs.org/api/corepack.html>
[env: FNM_COREPACK_ENABLED]
--resolve-engines [<RESOLVE_ENGINES>]
Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present.
This feature is enabled by default. To disable it, provide `--resolve-engines=false`.
Note: `engines.node` can be any semver range, with the latest satisfying version being resolved.
Note 2: If you disable it, please open an issue on GitHub describing _why_ you disabled it.
In the future, disabling it might be a no-op, so it's worth knowing any reason to
do that.
[env: FNM_RESOLVE_ENGINES]
[possible values: true, false]
通过执行命令fnm env可以查看当前的环境变量配置。
通过以上步骤在使用fnm命令时,在install对应node后,在执行use时,会报错:
We can't find the necessary environment variables to replace the Node version.
You should setup your shell profile to evaluate `fnm env`, see https://github.com/Schniz/fnm#shell-setup on how to do this
Check out our documentation for more information: https://fnm.vercel.app
fnm 虽然已经安装成功,但终端(Shell)并不知道如何找到它。系统提示的 We can't find the necessary environment variables... 意味着环境变量未配置。fnm 的环境变量加载脚本写入你的 Shell 配置文件中。通常的使用场景是 PowerShell 或 Windows Terminal。此时需要进行如下配置:
1. PowerShell 用户(最常见)
如果你使用的是 PowerShell(包括 Windows Terminal 中的 PowerShell),你需要修改你的 PowerShell 配置文件。
操作步骤:
- 打开 PowerShell,运行以下命令检查配置文件是否存在:
if (-not (Test-Path $profile)) { New-Item $profile -Force }(如果提示是否执行策略,输入
Y确认) - 运行以下命令编辑配置文件:
notepad $profile - 在记事本中,添加以下代码行并保存:
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression - 重启终端 或运行
.\$profile重新加载配置。
2. Windows Command Prompt (cmd.exe) 用户
如果你使用的是传统的黑框命令提示符(CMD),你需要配置自动运行脚本。
操作步骤:
- 按下
Win + R,输入regedit打开注册表编辑器。 - 导航到:
HKEY_CURRENT_USER\Software\Microsoft\Command Processor - 在右侧找到或新建一个 字符串值 (String Value),命名为
AutoRun。 - 双击修改其数值数据为:
@echo off if not defined FNM_AUTORUN_GUARD (set "FNM_AUTORUN_GUARD=AutorunGuard" & FOR /f "tokens=*" %z IN ('fnm env --use-on-cd') DO CALL %z)(或者你可以将上述脚本保存为
.cmd文件,然后将路径指向该文件) - 重启 CMD。
在 Windows 系统中,HKEY_CURRENT_USER\Software\Microsoft 目录下默认可能不存在 Command Processor 这个文件夹(注册表中称为“项”)。fnm 的初始化脚本需要这个路径来配置 CMD 环境,所以我们需要手动创建它。
请按照以下步骤操作,这很简单:
🔧 手动创建 Command Processor 项
- 打开注册表编辑器
按下Win + R键,输入regedit,然后按回车。 - 导航到指定路径
在注册表编辑器左侧的目录树中,依次展开,定位到:
HKEY_CURRENT_USER\Software\Microsoft - 新建项
右键点击Microsoft文件夹,在弹出的菜单中选择 “新建(N)” -> “项(K)”。
将新建的项命名为Command Processor。 - 新建字符串值
选中你刚刚创建的Command Processor项,在右侧的空白区域点击鼠标右键,选择 “新建(N)” -> “字符串值(S)”。
将这个新的字符串值命名为AutoRun。 - 编辑数值数据
双击你刚刚创建的AutoRun字符串值,在弹出的窗口中,将“数值数据(V)”一栏的内容修改为以下命令:@echo off if not defined FNM_AUTORUN_GUARD (set "FNM_AUTORUN_GUARD=AutorunGuard" & FOR /f "tokens=*" %z IN ('fnm env --use-on-cd') DO CALL %z)然后点击“确定”保存。
将脚本保存为独立的 .cmd 文件,不仅更整洁,也方便后续修改(比如添加其他自定义命令)。以下是详细的操作步骤:
第一步:创建脚本文件
- 在电脑任意位置(建议放在用户主目录,例如
C:\Users\你的用户名\)新建一个文本文档。 - 将文件名修改为
fnm_env.cmd(注意后缀名必须是.cmd或.bat,不能是.txt)。 - 右键点击该文件,选择“编辑”或“用记事本打开”。
- 将以下代码完整复制进去:
@echo off :: 设置一个环境变量标记,防止死循环递归调用 if not defined FNM_AUTORUN_GUARD ( set "FNM_AUTORUN_GUARD=AutorunGuard" :: 执行 fnm env 命令并运行输出的结果 FOR /f "tokens=*" %z IN ('fnm env --use-on-cd') DO CALL %z )注意:在
.cmd文件中,%z是正确的写法。如果在命令行直接输入才需要写成%%z。 - 保存文件并关闭记事本。
第二步:获取文件的绝对路径
你需要知道这个文件在电脑里的完整路径。
- 选中刚才创建的
fnm_env.cmd文件。 - 按住键盘上的 Shift 键 不放,同时右键点击该文件。
- 在菜单中选择 “复制文件地址”(或者“复制为路径”)。
- 假设你的用户名是
ZhangSan,路径通常是:C:\Users\ZhangSan\fnm_env.cmd
- 假设你的用户名是
第三步:修改注册表指向该文件
现在回到你刚才遇到的注册表界面:
- 打开注册表编辑器 (
Win + R->regedit)。 - 定位到你刚才创建的目录:
HKEY_CURRENT_USER\Software\Microsoft\Command Processor - 在右侧找到(或新建)字符串值
AutoRun。 - 双击打开它,在 “数值数据(V)” 中,粘贴刚才复制的文件路径。
- 例如:
C:\Users\ZhangSan\fnm_env.cmd
- 例如:
- 点击“确定”。
第四步:验证
- 关闭所有已经打开的 CMD 窗口。
- 重新打开一个新的 CMD 窗口。
- 输入
fnm --version。
如果显示版本号,说明配置成功!这种方式的好处是,以后如果你想添加其他开机自启的命令,只需要用记事本编辑这个 fnm_env.cmd 文件即可,不用再去动注册表。
3. Windows Terminal + WSL / Git Bash 用户
如果你在 Windows 上使用 WSL (Ubuntu) 或 Git Bash:
操作步骤:
- 打开终端,运行:
notepad ~/.bashrc(如果是 Zsh 用户,则编辑
~/.zshrc) - 在文件末尾添加:
eval "$(fnm env --use-on-cd --shell bash)" - 保存并运行
source ~/.bashrc生效,或重启终端。
⚙️ 验证是否成功
配置完成后,务必重启你的终端软件,然后依次执行以下命令检查:
# 检查 fnm 是否在 PATH 中
fnm --version
# 检查环境变量是否生效(应该输出 export 或 set 命令流)
fnm env
# 尝试安装并使用一个 Node 版本
fnm use --install-if-missing 18
node -v
💡 常见问题补充
- 报错
无法加载文件...因为在此系统上禁止运行脚本:- 这是 PowerShell 的执行策略限制。在管理员权限的 PowerShell 中运行
Set-ExecutionPolicy RemoteSigned并确认即可。
- 这是 PowerShell 的执行策略限制。在管理员权限的 PowerShell 中运行
- 使用了 Scoop/Chocolatey 安装但依然报错:
- 包管理器只负责把文件放到磁盘上,不会自动修改你的 Shell 配置文件。你必须手动执行上述第一步(PowerShell 配置)才能使用。
版本管理命令
# 列出所有可安装的远程版本
fnm list-remote
# 列出所有 LTS 版本
fnm list-remote --lts
# 安装最新 LTS 版本
fnm install --lts
# 安装指定主版本
fnm install 18
# 安装完整版本号
fnm install 18.21.1
# 安装最新版本
fnm install latest
# 列出本地已安装的版本
fnm list
# 查看当前使用的版本
fnm current
版本切换命令
# 切换到指定版本(当前会话)
fnm use 18
# 设置默认版本
fnm default 18
# 切换到最新版本
fnm use latest
# 切换到最新 LTS 版本
fnm use --lts
版本卸载命令
# 卸载指定版本
fnm uninstall 18.21.1
# 卸载当前版本
fnm uninstall $(fnm current)
# 批量卸载所有版本(Linux/macOS)
fnm list | awk -F' ' 'NR>1 {print $2}' | xargs -n1 fnm uninstall
本站所发布的一切软件资源、文章内容、页面内容可能整理来自于互联网,在此郑重声明本站仅限用于学习和研究目的;并告知用户不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
如果本站相关内容有侵犯到您的合法权益,请仔细阅读本站公布的投诉指引页相关内容联系我,依法依规进行处理!
作者:理想
链接:https://www.imyjs.cn/archives/1537
共有 0 条评论