使用 fnm 管理 node 版本

4,932 阅读2分钟

安装 fnm

平台:windows

通过 winget 安装(好用!推荐!)

# installs fnm (Fast Node Manager)
winget install Schniz.fnm

配置 powershell profile

安装后,terminal 并不能立即识别 node -v,找不到 node ,在载入shell 的时候,需要先运行 fnm env 所提供的设置。

Snipaste_2024-12-06_12-55-54.png

在 windows 中,输入命令直接打开编辑:

notepad $profile

或者在 powershell 中,输入 $PROFILE,获取到 一个路径:

PS C:\Users\jay18> $PROFILE
C:\Users\jay18\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
## 旧版本可能是这样 PowerShell\PowerShell_profile.ps1

Microsoft.PowerShell_profile.ps1 如果没有,可新建(路径和文件)。

之后,在文件内加入:

fnm env --use-on-cd | Out-String | Invoke-Expression

重启后, 测试 node -vnpm -v 可正常使用。

遇到的问题

配置好 PowerShell_profile 后,终端报错:

image.png

查询报错信息后得知:

“无法加载文件 \WindowsPowerShell\profile.ps1,因为在此系统上禁止 [运行脚本]

了解计算机上的现用 [执行策略],打开 PowerShell 然后输入:

>> get-executionpolicy
Restricted

更改执行策略,以管理员身份打开 PowerShell 输入:

set-executionpolicy remotesigned

再次查看执行策略:

>> get-executionpolicy
RemoteSigned

此时即可运行env配置。

如果要更改回 Windows客户端计算机的默认执行策略,则设置为restricted:

set-executionpolicy restricted

CMD 配置

因為我日常是使用 PowerShell 而非 cmd , 所以我也不想搞。

有興趣的話,可以參考官方的做法:

github.com/Schniz/fnm#…

git bash 配置

进入用户目录,在 git bash 的配置文件 .bash_profile.bashrc 添加如下代码:

(找不到文件的话,使用 where .bashrc 查看路径。)

    eval "$(fnm env --use-on-cd --shell zsh)"

直接配置上面那句会有点问题,找不到几个bash命令, 以至于进入入路不能正常读取node版本并切换。

后来查阅并实践后使用如下代码:

eval $(fnm env | sed 1d)
export PATH=$(cygpath $FNM_MULTISHELL_PATH):$PATH

if [[ -f .node-version || -f .nvmrc ]]; then
   fnm use
fi

创建 git bash 配置文件 in windows

cd ~ // 切换到用户目录
touch .bash_profile // 创建 file,之后进行编辑内容即可

安装 Node.js 及 fnm 常用命令

设置好 path 后,重启 powershell ,使用 fnm --version 查看安装好的 fnm 的版本。

PS C:\Users\jay18> fnm --version
fnm 1.33.1

查看可安装的 Node.js 版本。fnm list-remote fnm ls-remote

查看目前已经安装了的node版本:fnm list

安装node: fnm install v16.18.1

安装最新LTS版本: fnm install --lts

安装的版本支持部分匹配: fnm install 17,安装主版本下最新的版本

下载的node放置的路径:C:\Users\jay18\AppData\Roaming\fnm

查看帮助:fnm -h 可查看相关可用命令的帮助说明

进入项目自动切换 node 版本

配置好环境变量之后,在项目根目录创建 .node-version 或者 .nvmrc 文件,进入项目目录后即可自动切换设定好的 node 版本。

18.20.5

webstrom 自动识别 node 路径

因为 没有把 node 命令所在的文件夹加入 Path 环境变量,这样 WebStorm 就没有识别到使用 fnm 安装的 Node.js。 解决办法:终端执行下面的命令,把路径写到path中

[Environment]::SetEnvironmentVariable('Path', [Environment]::GetEnvironmentVariable('Path', 'User') + ";$env:APPDATA\fnm\aliases\default", 'User')

References

Download Nodejs

oldestdream.com/2022/04/win…

github.com/Schniz/fnm

nodejs.org/en/download…

9to5tutorial.com/installing-…

科普文:用锈化的 fnm 管理 Node.js 版本 - 知乎 (zhihu.com)

new :

NodeJS版本管理工具fnm安装教程 - 掘金 (juejin.cn)

Tips

  • echo $HOME 输出默认主目录
  • %USERPROFILE% 在文件资源管理器中,输入后回车,可直接跳转到用户目录。
  • $profile 返回 powershell profile 文件的路径
  • %windir% 在文件资源管理器中,输入后回车,可直接跳转到 系统 windows 目录中,以便找到 system、system32 目录。
  • npm list -g --dept 0 查看node安装的模块和包

2023/2/23 初次接触 fnm 整理的资料 2024/12/06 再次编辑整理