文章目录
注意:Windows安装比较麻烦,所以Windows建议使用Windows Subsystem for Linux,能避免非常多的问题,或者继续用nvm-windows。
安装
通过Winget、Scoop、Chocolatey、Cargo
等工具来安装
在发布页面下载对应的exe文件
-
最新版的
fnm-windows.zip
。 -
将里面的
fnm.exe
解压缩到你想要放置的地方。我将它放在了C:\Program Files\fnm-windows
。 -
把含有
fnm.exe
的路径加入到系统的环境变量中:C:\Program Files\fnm-windows
。① 右键点击“此电脑”或“我的电脑”,选择“属性”;
② 点击“高级系统设置”;
④ 在“系统属性”窗口中,点击“环境变量”;
⑤ 在“系统变量”部分,点击“新建”;
⑥ 分别输入变量名
FNM_DIR与
变量值C:\Program Files\fnm-windows
(替换为自己的Fnm安装路径);⑦ 在“系统变量”部分,找到 Path 变量并双击;
⑧ 点击“新建”,添加 Fnm 的安装路径
%FNM_DIR%
;⑨ 点击“确定”以保存更改。
也可直接在 Path 中添加 Fnm安装路径
-
验证:打开Windows PowerShell,输入命令:
fnm --version
PS C:\Users\admin> fnm -V fnm 1.38.1
配置
fnm install --lts
安装后,执行fnm use xxx
报错
error: 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,配置文件尚未完全配置
cmd
本质上都是运行官方文档的一段代码:
@echo off
:: for /F will launch a new instance of cmd so we create a guard to prevent an infnite loop
if not defined FNM_AUTORUN_GUARD (
set "FNM_AUTORUN_GUARD=AutorunGuard"
FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
)
猜测原理为:fnm use 版本号 命令需要在上下文中获取版本号信息,执行这段代码会手动把信息放入到cmd的上下文中
因此,各种方式都是运行该段代码(之后这段代码会放在start.cmd文件里)。
-
新建文本文档,贴入上面代码,重命名为cmd后缀文件,例:
start.cmd
-
使用
win + r
命令输入cmd
,默认地址是在%USERPROFILE%
路径下。把start.cmd文件放在这里,每次打开cmd窗口都要手动输入start.cmd
运行。之后可在该窗口使用fnm -
打开注册表编辑器,进入
计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor
路径下,如果没有对应文件夹,需要手动进行创建。在
Command Processor
文件夹上右键 -> 新建 -> 字符串值数值名称为 AutoRun
,数值数据为start.cmd文件的地址(C:\Users\admin\start.cmd
)。之后,每个cmd窗口都可直接使用fnm
若不使用不了,尝试 重启电脑 让修改后的注册表生效
Windows PowerShell
也是开发工具的集成终端
每次打开 PowerShell,都需要执行配置命令:
fnm env --use-on-cd | Out-String | Invoke-Expression
-
PowerShell窗口,输入
notepad $profile
命令打开 PowerShell 配置文件,贴入配置命令:fnm env --use-on-cd | Out-String | Invoke-Expression
如果提示找不到文件路径,输入
$profile
,按输出路径创建目录及文件,再贴入配置命令PS C:\Users\admin> $PROFILE C:\Users\admin\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
若提示
无法加载文件 WindowsPowerShell\profile.ps1
,更改执行策略允许运行脚本:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
输入
Y
并按回车键确认尝试运行一个简单的 PowerShell 脚本来验证设置是否成功:
Write-Output "Hello, PowerShell!"
重新打开窗口,可直接使用 fnm
其他
PowerShell 输入命令:fnm env
PS C:\Users\admin> fnm env
$env:PATH = "C:\Program Files\fnm-windows"
$env:FNM_MULTISHELL_PATH = "C:\Users\admin\AppData\Local\fnm_multishells\12400_1733887059197"
$env:FNM_VERSION_FILE_STRATEGY = "local"
$env:FNM_DIR = "C:\Users\admin\AppData\Roaming\fnm"
$env:FNM_LOGLEVEL = "info"
$env:FNM_NODE_DIST_MIRROR = "https://nodejs.org/dist"
$env:FNM_COREPACK_ENABLED = "false"
$env:FNM_RESOLVE_ENGINES = "true"
$env:FNM_ARCH = "x64"
具体释义如下:
$env:FNM_NODE_DIST_MIRROR:指定 Node.js 分发包的镜像地址。
$env:FNM_VERSION_FILE_STRATEGY:定义如何处理版本文件。
$env:FNM_ARCH:指定系统的架构类型。
$env:FNM_MULTISHELL_PATH:指定用于管理多 Shell 会话的路径。在使用多个终端或 Shell 的情况下,Fnm 会在该路径下创建相应的目录,以便管理不同 Shell 会话的 Node.js 版本。
$env:FNM_COREPACK_ENABLED:启用或禁用 Corepack。
$env:FNM_RESOLVE_ENGINES:确定是否解析引擎版本。
$env:FNM_LOGLEVEL:设置 Fnm 的日志级别,默认值info,可选值quiet, error, info。
$env:FNM_DIR:指定 Fnm 的安装目录。
参考:
Node.JS 版本管理工具 Fnm 安装及配置(Windows)
彻底解决fnm刚安装完出现You should setup your shell profile to evaluate ‘fnm env‘问题
win+r,输入cmd 回车
在cmd窗口下输入 set 回车,可以查看系统变量