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_HOMENVM_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.yamlcorepack 会自动根据项目要求的版本进行切换,非常省心。

切换 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 defaultfnm 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 文件时,点击"另存为",在底部的 【编码】 下拉框中选择 ANSIUTF-16 LE 。千万不要选默认的 UTF-8

结语

从 nvm 迁移到 fnm 后,最直观的感受是打开终端再也没有那 0.5 秒的延迟了。作为追求效率的前端开发,这波"装备升级"绝对值得!

觉得有用的话,点个赞支持一下吧!评论区欢迎交流 Windows 环境配置心得。

相关推荐
lichenyang4532 小时前
Next.js 初学者核心知识点
前端
张一凡932 小时前
easy-model 在数据可视化仪表板中的应用
前端·react.js
学以智用2 小时前
# Vue3 AJAX 请求数据
前端·vue.js
兆子龙2 小时前
TypeScript 模板字面量类型高级用法
前端
miss2 小时前
龙虾帮你如何配置自己的技能之前端周报生成
前端
miss2 小时前
JavaScript 异步循环完全指南:从踩坑到最佳实践
前端
家里有蜘蛛2 小时前
从 Webpack 迁移到 Rspack 后,循环依赖为什么炸了?一个 const vs var 引发的血案
前端
山_雨2 小时前
前端重连机制
前端
Cache技术分享2 小时前
355. Java IO API -去除路径中的冗余信息
前端·后端