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 环境配置心得。

相关推荐
ZoeLandia5 分钟前
TypeScript 04:类型断言与类型守卫
开发语言·前端·typescript
guzicheng19908 分钟前
webpack 安装笔记:全局 vs 本地,以及一个 PATH 环境变量的坑
前端·webpack
西索斯coding15 分钟前
Claude Code 工具调用返回空怎么办?claude-opus-5.5 的 input_schema 校验踩坑记录与修复方案
服务器·前端·javascript·ai
疯狂敲代码的老刘16 分钟前
MarvellousSuspender浏览器扩展:1.4K星开源标签页冻结神器,Chrome吃内存终结者的干净复活版
前端·chrome
码上上班17 分钟前
shell 脚本知识点总结
前端·chrome
程序员Sunday18 分钟前
Flex 和 Grid 有什么区别?一维布局、二维布局怎么选?
前端·css·面试
Jlzn888820 分钟前
华南PACK线自动化率怎么统计才靠谱
前端·javascript·自动化
拖孩40 分钟前
AI 时代,个人开发者到底能不能靠一个小程序赚到钱
前端·后端·微信小程序
Hilaku42 分钟前
ERP选型时不问MCP,等于默认三年后再付一次集成费!
前端·javascript·程序员
程序人生88842 分钟前
几百张固定位置扫描件如何离线批量清?DocConverter Web 批量去水印链路
前端