前言:在 Windows 上开发,你是否忍受过
nvm-windows切换版本时的缓慢?甚至因为环境变量没配对导致node -v毫无反应?今天推荐大家更换为 fnm (Fast Node Manager) 。它基于 Rust 开发,主打一个“快”字,且对 Windows 原生支持极佳。
🛑 第一步:彻底清理旧环境 (卸载 nvm)
为了避免多个 Node 管理器抢夺 PATH 变量,建议先送走 nvm-windows。
-
卸载程序:打开“控制面板” -> “程序和功能”,找到
nvm-windows并点击卸载。 -
清理残留:删除文件夹
C:\Users\你的用户名\AppData\Roaming\nvm(如果有)。 -
清理环境变量:
- 右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
- 在用户变量中,删除
NVM_HOME和NVM_SYMLINK。 - 在
Path变量中,删除包含%NVM_HOME%或%NVM_SYMLINK%的行。
-
验证:打开 PowerShell,输入
node -v。如果提示“不是内部或外部命令”,说明清理干净了。
🚀 第二步:安装 fnm
在 Windows 上,最推荐使用 Winget(Win10/11 自带的包管理器),无需手动下载安装包。
打开 PowerShell (推荐管理员模式),运行:
PowerShell
winget install Schniz.fnm
如果你习惯用 Scoop,也可以执行:scoop install fnm
⚙️ 第三步:配置环境变量 (核心避坑区)
安装完 fnm 必须手动激活环境,否则执行 fnm use 会报错。
1. 创建并打开配置文件
在 PowerShell 中输入:
PowerShell
# 如果提示找不到路径,请先运行这一行创建文件
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
# 打开配置文件
notepad $PROFILE
2. 写入激活代码
在打开的记事本末尾,粘贴以下代码并保存(Ctrl+S):
PowerShell
fnm env --use-on-cd | Out-String | Invoke-Expression
🔐 第四步:解决“禁止运行脚本”报错 (必看)
重启终端后,你可能会看到一片红字报错:“在此系统上禁止运行脚本”。这是因为 Windows 默认限制了脚本权限。
解决方法:
-
以 管理员身份 运行 PowerShell。
-
执行以下命令:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -
输入
Y并回车确认。 -
重启终端,报错消失。
📌 第五步:设置默认 Node 版本
安装好 fnm 后,你需要下载并指定一个全局默认版本:
PowerShell
# 1. 安装最新的 LTS 版本 (或者指定版本号,如 fnm install 20)
fnm install --lts
# 2. 将该版本设为全局默认
fnm default 20
# 3. 验证
node -v
📦 第六步:进阶 —— 找回丢失的 Yarn/Pnpm
首选 pnpm?
- 速度极快:比 npm/yarn 快 2-3 倍。
- 节省空间:基于内容寻址存储,相同的依赖在全局只存一份,不会重复占用磁盘。
- 严格模式:解决“幽灵依赖”问题,让你的项目更稳健。
安装 pnpm (推荐方式)
在 Windows 环境下,如果你已经按照前文配置好了 fnm,直接用 corepack 激活是最优雅的:
PowerShell
# 1. 激活 Node 内置的 corepack
corepack enable
# 2. 准备 pnpm
corepack prepare pnpm@latest --activate
# 3. 验证
pnpm -v
注意:如果你的项目里已经有
pnpm-lock.yaml,corepack会自动根据项目要求的版本进行切换,非常省心。
切换 Node 版本后,全局安装的 yarn 会“消失”。推荐使用 Node 官方内置的 Corepack 来解决,无需重复安装。
方法 A:使用内置 Corepack (推荐)
Node v16.13+ 官方内置了 corepack,可以无感激活 Yarn:
PowerShell
# 激活 Node 内置的包管理工具管理器
corepack enable
# 验证 Yarn 是否可用
yarn -v
这种方式最稳妥,它会根据你项目里的 packageManager 字段自动匹配 Yarn 版本。
方法 B:手动全局安装
如果你更喜欢传统方式:
Bash
fnm use 20 # 先切换到你要用的版本
npm install -g yarn
🛠️ Windows 常用指令速查
| 命令 | 说明 |
|---|---|
fnm ls-remote | 列出所有可下载的 Node 版本 |
fnm list | 查看本地已安装的版本 |
fnm install <version> | 安装指定版本 |
fnm use <version> | 临时切换版本 |
fnm default <version> | 永久设置默认版本 |
⚠️ Windows 专属避坑指南
- 权限报错:如果在执行
fnm default或fnm use时报符号链接(Symlink)错误,请以管理员身份运行 PowerShell,或者在系统设置中开启“开发者模式”。 - 终端选择:强烈建议配合 Microsoft Terminal 使用,配合
oh-my-posh视觉体验更佳。 - 彻底卸载官方版 Node:如果你之前是从 Node.js 官网下载的
.msi安装包安装的 Node,请务必先去控制面板卸载它,否则它会占用系统路径,导致 fnm 失效。
Windows 开发效率:一键添加“右键在此处打开 PowerShell (管理员)”全攻略
在 Windows 上做前端开发,频繁切换目录是常态。虽然 Win11 自带了终端右键菜单,但很多时候我们需要管理员权限,或者需要原生 PowerShell。
🚀 核心脚本:一键导入
新建一个记事本,将以下内容粘贴进去,保存并重命名为 add_powershell.reg(确保后缀是 .reg)。
代码段
Windows Registry Editor Version 5.00
; --- 1. 普通权限版 ---
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\PowerShell]
@="在此处打开 PowerShell"
"Icon"="powershell.exe"
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\PowerShell\command]
@="powershell.exe -noexit -command "Set-Location -LiteralPath '%V'""
; --- 2. 管理员权限版 ---
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\PowerShellAdmin]
@="在此处打开 PowerShell (管理员)"
"Icon"="powershell.exe"
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\PowerShellAdmin\command]
@="powershell.exe -Command "Start-Process powershell -ArgumentList '-noexit','-command',\"Set-Location -LiteralPath '%V'\" -Verb RunAs""
后悔药:如何卸载?
如果不想要了,新建 .reg 运行以下内容即可清理干净:
代码段
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\PowerShell]
[-HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\PowerShellAdmin]
⚠️ 必看:避坑指南(三大生存法则)
如果你直接保存运行,可能会遇到以下三个问题,请务必对号入座:
1. 解决中文乱码(最重要!)
现象:右键菜单显示一串看不懂的符号。 对策:保存 .reg 文件时,点击“另存为”,在底部的 【编码】 下拉框中选择 ANSI 或 UTF-16 LE。千万不要选默认的 UTF-8。
结语
从 nvm 迁移到 fnm 后,最直观的感受是打开终端再也没有那 0.5 秒的延迟了。作为追求效率的前端开发,这波“装备升级”绝对值得!
觉得有用的话,点个赞支持一下吧!评论区欢迎交流 Windows 环境配置心得。