安装 fnm
平台:windows
通过 winget 安装(好用!推荐!)
# installs fnm (Fast Node Manager)
winget install Schniz.fnm
配置 powershell profile
安装后,terminal 并不能立即识别 node -v,找不到 node ,在载入shell 的时候,需要先运行 fnm env 所提供的设置。
在 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 -v 和 npm -v 可正常使用。
遇到的问题
配置好 PowerShell_profile 后,终端报错:
查询报错信息后得知:
“无法加载文件 \WindowsPowerShell\profile.ps1,因为在此系统上禁止 [运行脚本]
了解计算机上的现用 [执行策略],打开 PowerShell 然后输入:
>> get-executionpolicy
Restricted
更改执行策略,以管理员身份打开 PowerShell 输入:
set-executionpolicy remotesigned
再次查看执行策略:
>> get-executionpolicy
RemoteSigned
此时即可运行env配置。
如果要更改回 Windows客户端计算机的默认执行策略,则设置为restricted:
set-executionpolicy restricted
CMD 配置
因為我日常是使用 PowerShell 而非 cmd , 所以我也不想搞。
有興趣的話,可以參考官方的做法:
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
科普文:用锈化的 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 再次编辑整理