Windows下使用fnm Node管理工具

FNM(Fast Node Manager)是一个用 Rust 编写的现代化 Node.js 版本管理工具,以其快速的切换速度和跨平台支持而闻名。相比传统的版本管理工具,FNM 提供了更优的性能和更简洁的使用体验。

什么是FNM?

FNM 是一个快速简便的 No​​de.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 配置文件。

操作步骤:

  1. 打开 PowerShell,运行以下命令检查配置文件是否存在:
    if (-not (Test-Path $profile)) { New-Item $profile -Force }
    

    (如果提示是否执行策略,输入 Y 确认)

  2. 运行以下命令编辑配置文件:
    notepad $profile
    
  3. 在记事本中,添加以下代码行并保存:
    fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
    
  4. 重启终端 或运行 .\$profile 重新加载配置。

2. Windows Command Prompt (cmd.exe) 用户

如果你使用的是传统的黑框命令提示符(CMD),你需要配置自动运行脚本。

操作步骤:

  1. 按下 Win + R,输入 regedit 打开注册表编辑器。
  2. 导航到:HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. 在右侧找到或新建一个 字符串值 (String Value),命名为 AutoRun
  4. 双击修改其数值数据为:
    @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 文件,然后将路径指向该文件)

  5. 重启 CMD。

在 Windows 系统中,HKEY_CURRENT_USER\Software\Microsoft 目录下默认可能不存在 Command Processor 这个文件夹(注册表中称为“项”)。fnm 的初始化脚本需要这个路径来配置 CMD 环境,所以我们需要手动创建它。

请按照以下步骤操作,这很简单:

🔧 手动创建 Command Processor

  1. 打开注册表编辑器
    按下 Win + R 键,输入 regedit,然后按回车。
  2. 导航到指定路径
    在注册表编辑器左侧的目录树中,依次展开,定位到:
    HKEY_CURRENT_USER\Software\Microsoft
  3. 新建项
    右键点击 Microsoft 文件夹,在弹出的菜单中选择 “新建(N)” -> “项(K)”
    将新建的项命名为 Command Processor
  4. 新建字符串值
    选中你刚刚创建的 Command Processor 项,在右侧的空白区域点击鼠标右键,选择 “新建(N)” -> “字符串值(S)”
    将这个新的字符串值命名为 AutoRun
  5. 编辑数值数据
    双击你刚刚创建的 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 文件,不仅更整洁,也方便后续修改(比如添加其他自定义命令)。以下是详细的操作步骤:

第一步:创建脚本文件

  1. 在电脑任意位置(建议放在用户主目录,例如 C:\Users\你的用户名\)新建一个文本文档。
  2. 将文件名修改为 fnm_env.cmd(注意后缀名必须是 .cmd.bat,不能是 .txt)。
  3. 右键点击该文件,选择“编辑”或“用记事本打开”。
  4. 将以下代码完整复制进去:
    @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

  5. 保存文件并关闭记事本。

第二步:获取文件的绝对路径

你需要知道这个文件在电脑里的完整路径。

  1. 选中刚才创建的 fnm_env.cmd 文件。
  2. 按住键盘上的 Shift 键 不放,同时右键点击该文件。
  3. 在菜单中选择 “复制文件地址”(或者“复制为路径”)。
    • 假设你的用户名是 ZhangSan,路径通常是:C:\Users\ZhangSan\fnm_env.cmd

第三步:修改注册表指向该文件

现在回到你刚才遇到的注册表界面:

  1. 打开注册表编辑器 (Win + R -> regedit)。
  2. 定位到你刚才创建的目录:
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. 在右侧找到(或新建)字符串值 AutoRun
  4. 双击打开它,在 “数值数据(V)” 中,粘贴刚才复制的文件路径。
    • 例如:C:\Users\ZhangSan\fnm_env.cmd
  5. 点击“确定”。

第四步:验证

  1. 关闭所有已经打开的 CMD 窗口。
  2. 重新打开一个新的 CMD 窗口。
  3. 输入 fnm --version

如果显示版本号,说明配置成功!这种方式的好处是,以后如果你想添加其他开机自启的命令,只需要用记事本编辑这个 fnm_env.cmd 文件即可,不用再去动注册表。

3. Windows Terminal + WSL / Git Bash 用户

如果你在 Windows 上使用 WSL (Ubuntu) 或 Git Bash:

操作步骤:

  1. 打开终端,运行:
    notepad ~/.bashrc
    

    (如果是 Zsh 用户,则编辑 ~/.zshrc)

  2. 在文件末尾添加:
    eval "$(fnm env --use-on-cd --shell bash)"
    
  3. 保存并运行 source ~/.bashrc 生效,或重启终端。

⚙️ 验证是否成功

配置完成后,务必重启你的终端软件,然后依次执行以下命令检查:

# 检查 fnm 是否在 PATH 中
fnm --version

# 检查环境变量是否生效(应该输出 export 或 set 命令流)
fnm env

# 尝试安装并使用一个 Node 版本
fnm use --install-if-missing 18
node -v

💡 常见问题补充

  • 报错 无法加载文件...因为在此系统上禁止运行脚本
    • 这是 PowerShell 的执行策略限制。在管理员权限的 PowerShell 中运行 Set-ExecutionPolicy RemoteSigned 并确认即可。
  • 使用了 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
THE END
分享
二维码
打赏
海报
Windows下使用fnm Node管理工具
相关网站 Schniz/fnm: 🚀 Fast and simple Node.js……
<<上一篇
下一篇>>