Windows 前端环境进化论:告别 nvm,拥抱 Rust 编写的 fnm!

前言 :在 Windows 上开发,你是否忍受过 nvm-windows 切换版本时的缓慢?甚至因为环境变量没配对导致 node -v 毫无反应?今天推荐大家更换为 fnm (Fast Node Manager) 。它基于 Rust 开发,主打一个"快"字,且对 Windows 原生支持极佳。


🛑 第一步:彻底清理旧环境 (卸载 nvm)

为了避免多个 Node 管理器抢夺 PATH 变量,建议先送走 nvm-windows。

  1. 卸载程序 :打开"控制面板" -> "程序和功能",找到 nvm-windows 并点击卸载。

  2. 清理残留 :删除文件夹 C:\Users\你的用户名\AppData\Roaming\nvm(如果有)。

  3. 清理环境变量:

    • 右键"此电脑" -> "属性" -> "高级系统设置" -> "环境变量"。
    • 在用户变量 中,删除 NVM_HOME 和 NVM_SYMLINK。
    • 在 Path 变量中,删除包含 %NVM_HOME% 或 %NVM_SYMLINK% 的行。
  4. 验证 :打开 PowerShell,输入 node -v。如果提示"不是内部或外部命令",说明清理干净了。


🚀 第二步:安装 fnm

在 Windows 上,最推荐使用 Winget(Win10/11 自带的包管理器),无需手动下载安装包。

打开 PowerShell (推荐管理员模式),运行:

PowerShell

复制代码
winget install Schniz.fnm

如果你习惯用 Scoop,也可以执行:scoop install fnm


⚙️ 第三步:配置环境变量 (核心避坑区)

安装完 fnm 必须手动激活环境,否则执行 fnm use 会报错。

1. 创建并打开配置文件

在 PowerShell 中输入:

PowerShell

bash 复制代码
# 如果提示找不到路径,请先运行这一行创建文件
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }

# 打开配置文件
notepad $PROFILE

2. 写入激活代码

在打开的记事本末尾,粘贴以下代码并保存(Ctrl+S):

PowerShell

rust 复制代码
fnm env --use-on-cd | Out-String | Invoke-Expression

🔐 第四步:解决"禁止运行脚本"报错 (必看)

重启终端后,你可能会看到一片红字报错:"在此系统上禁止运行脚本"。这是因为 Windows 默认限制了脚本权限。

解决方法:

  1. 以 管理员身份 运行 PowerShell。

  2. 执行以下命令:

    PowerShell

    sql 复制代码
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  3. 输入 Y 并回车确认。

  4. 重启终端,报错消失。

📌 第五步:设置默认 Node 版本

安装好 fnm 后,你需要下载并指定一个全局默认版本:

PowerShell

csharp 复制代码
# 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

bash 复制代码
# 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

bash 复制代码
# 激活 Node 内置的包管理工具管理器
corepack enable

# 验证 Yarn 是否可用
yarn -v

这种方式最稳妥,它会根据你项目里的 packageManager 字段自动匹配 Yarn 版本。

方法 B:手动全局安装

如果你更喜欢传统方式:

Bash

perl 复制代码
fnm use 20  # 先切换到你要用的版本
npm install -g yarn

🛠️ Windows 常用指令速查

命令 说明
fnm ls-remote 列出所有可下载的 Node 版本
fnm list 查看本地已安装的版本
fnm install <version> 安装指定版本
fnm use <version> 临时切换版本
fnm default <version> 永久设置默认版本

⚠️ Windows 专属避坑指南

  1. 权限报错 :如果在执行 fnm default 或 fnm use 时报符号链接(Symlink)错误,请以管理员身份运行 PowerShell,或者在系统设置中开启"开发者模式"。
  2. 终端选择 :强烈建议配合 Microsoft Terminal 使用,配合 oh-my-posh 视觉体验更佳。
  3. 彻底卸载官方版 Node :如果你之前是从 Node.js 官网下载的 .msi 安装包安装的 Node,请务必先去控制面板卸载它,否则它会占用系统路径,导致 fnm 失效。

Windows 开发效率:一键添加"右键在此处打开 PowerShell (管理员)"全攻略

在 Windows 上做前端开发,频繁切换目录是常态。虽然 Win11 自带了终端右键菜单,但很多时候我们需要管理员权限 ,或者需要原生 PowerShell。


🚀 核心脚本:一键导入

新建一个记事本,将以下内容粘贴进去,保存并重命名为 add_powershell.reg(确保后缀是 .reg)。

代码段

bash 复制代码
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 运行以下内容即可清理干净:

代码段

css 复制代码
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 环境配置心得。

相关推荐
tryCbest20 分钟前
Vue3——第 13 篇:计算属性与侦听器——computed 与 watch 的进化
前端·javascript·vue.js
怒放的生命199132 分钟前
本地用 pnpm 省磁盘,团队继续用 npm:极简实践
前端·npm·node.js
believed_breadfruit1 小时前
我开源了一个HTML 分页导出工具,解决了复杂页面的内容截断、跨页错乱和长文档白屏问题
前端·javascript·github
福狼1 小时前
从“网墙”到柔性曲面:一次 WebGPU 波浪的逆向分析与重建
前端·逆向
宝哥聊编程1 小时前
主流 Agent 平台对比:Coze、Dify、飞书、扣子、OpenClaw 落地实操手册
前端·人工智能·飞书
时间的情敌1 小时前
Vue3 + Cesium 实战:本地上传 GLB 模型、模型上叠加 GLB、点击控制透明度
前端·vue.js·cesium
拖孩1 小时前
流量主门槛从 500 降到 100,我的小程序上线 18 小时够到了线
前端·后端·微信小程序
深蓝AI2 小时前
编码 Agent 的界面味靠提示词压不住:Impeccable 用无模型规则拦同一套模板
前端·程序员
January12073 小时前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json
asdzx673 小时前
C# 操作 PDF 元数据:从属性写入到字段提取的完整流程
前端·pdf·c#