Skip to content

个人博客自建指南(1):从零搭建 Node.js 运行环境 —— 用 fnm 实现丝滑版本管理

前言

在开始写博客、搭脚手架之前,第一步自然是装 Node.js它是现代前端开发的基石——Vue、Vite、Vitepress 都离不开它。所以第一篇我们先解决环境问题。

直接装 Node.js 当然也能用,但实际开发中你会发现一个问题:不同项目依赖不同版本的 Node(比如老项目用 16,新项目用 20),手动卸载重装很麻烦。这时候就需要一个版本管理工具——它能让你在多个 Node 版本间自由切换,甚至进入项目目录自动切换。

这类工具有很多,nvm 是最知名的,但我推荐用 fnm。原因很简单:快。fnm 用 Rust 写的,启动速度比 nvm 快一个量级,而且天然支持 Windows(nvm 在 Windows 上体验很差)。

这篇文章会带你从零开始在 Windows PowerShell 下配置 fnm 和 Node.js,全程实操,无废话。

前置准备:认识 Windows PowerShell

本专栏的所有命令都在 Windows 11 的终端(Windows Terminal)​ 中运行,默认使用 PowerShell​ 环境。

什么是 PowerShell ?

PowerShell 是 Windows 系统自带的命令行工具,比传统的命令提示符(CMD)更强大。你可以把它理解为“能打字指挥电脑干活的窗口”。本教程中所有以 # powershell开头的命令,都需要在 PowerShell 窗口中执行。

如何打开 PowerShell / Windows Terminal ?

方法一(推荐,Windows 11):

  1. 右键点击左下角的 “开始”按钮(或按 Win + X)
  2. 选择 “终端”​ 或 “终端(管理员)”(如果后续需要管理员权限)
  3. 打开的窗口默认就是 PowerShell 环境

方法二(通用):

  1. 按键盘上的 Win键,输入 powershell
  2. 在搜索结果中点击 “Windows PowerShell”​ 或 “以管理员身份运行

💡 本教程中如无特殊说明,所有命令默认均在 Windows 11Windows Terminal(PowerShell 7+)​ 下运行,且测试通过。如果你使用的是其他版本(如 Windows 10),操作方式基本相同,但界面可能略有差异。

一、安装 fnm

1.1 下载安装包

由于常规的 winget install Schniz.fnm 在线安装脚本内部会去 GitHub 拉zip归档,国内网络常卡死,改用离线安装更稳:先用国内代理把 zip 下载到本地,再进行手动安装。

powershell
# 先建目录(如果还没有):
New-Item -Path D:\fnm-windows -ItemType Directory -Force
cd D:\fnm-windows

# fnm 的 GitHub Releases:https://github.com/Schniz/fnm/releases/latest
# 国内代理下载(以 v1.39.0 为例,去 Releases 查最新版号替换):
curl.exe -LO https://gh.llkk.cc/https://github.com/Schniz/fnm/releases/download/v1.39.0/fnm-windows.zip

上述下载链接中,若代理超时 代理站点可进行替换,通过代理查询站查询可用节点地址替换。
例如: https://gh.llkk.cc/https://github.com/....
替换为: https://777.z321.cc.cd/https://github.com/....

代理查询站:https://github.akams.cn/

1.2 手动安装

解压到目标目录:

powershell
Expand-Archive -Path D:\fnm-windows\fnm-windows.zip -DestinationPath D:\fnm-windows

验证:

powershell
D:\fnm-windows\fnm.exe --version
#能看到版本号,再把 D:\fnm-windows 加入 PATH(见 2.1 节)。

⚠️ 路径不要带空格,fnm.exe 要裸放在目录里(不是再套一层文件夹),否则后续 fnm env 加载时容易路径解析异常。

二、配置环境变量

2.1 把 fnm 所在目录加入 PATH

Win 键 → 搜“环境变量” → 打开“编辑系统环境变量” → 「环境变量」→ 上半区“用户变量” → 找 Path→ 编辑 → 新建 → 粘贴你的 fnm 目录路径(比如 D:\fnm-windows)。

✅ 你要加到 PATH 的是目录,不是 fnm.exe本身。
配置环境变量后, PowerShell窗口才能直接定位到fnm程序,使用其命令行功能。

2.2 验证 PATH 生效

关掉所有旧终端,开一个新的 PowerShell,运行:

powershell
where.exe fnm
fnm --version

能看到版本号就说明 PATH 生效了。
如果提示找不到,99% 是:没关旧窗口 / 路径粘错 / 放的是 zip 但没解压。

2.3 配置 fnm 数据目录 + 国内镜像(强烈推荐)

还是在刚才的环境变量窗口,上半区“用户变量”点「新建」,添加以下两个变量:

变量名: FNM_DIR
变量值: D:\fnm-windows

变量名: FNM_NODE_DIST_MIRROR
变量值: https://npmmirror.com/mirrors/node/

这样 fnm 下载的 Node 文件会放在你指定的目录,不会乱塞 C 盘,而且国内下载速度快得多。

保存后重新开一个终端,验证:

powershell
fnm env

能看到 FNM_DIR和 FNM_NODE_DIST_MIRROR那几行就对了。

三、配置 PowerShell 初始化

为什么要配置 PowerShell 初始化 ?
fnm 的工作原理是通过 fnm env 命令动态生成环境变量(主要是 PATH),告诉系统当前使用哪个 Node 版本。但这个环境变量是临时的——关掉终端就没了

所以我们需要让 PowerShell 每次启动时自动执行 fnm env,这样才能做到“开终端就能用 fnm,进目录自动切版本”。

做法是:把 fnm env 写到 PowerShell 的配置文件($PROFILE)里。这个文件在 PowerShell 启动时自动加载,相当于“开机自启脚本”。

3.1 以管理员身份打开 PowerShell

右键左下角win图标 → PowerShell / 终端 (管理员)。

3.2 修改执行策略

powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

提示时输入 Y回车。

3.3 创建 PowerShell 配置文件

powershell
New-Item -Path $PROFILE -ItemType File -Force

3.4 编辑配置文件,添加 fnm 自动加载

powershell
notepad $PROFILE

在打开的记事本中粘贴:

powershell
fnm env --use-on-cd | Out-String | Invoke-Expression

保存关闭。

3.5 立即加载配置

powershell
. $PROFILE

3.6 验证 fnm 安装

powershell
fnm --version

四、安装并使用 Node.js

4.1 查看可用版本

powershell
fnm list-remote --lts

会列出所有 LTS 版本号。

4.2 安装指定版本

以当前 LTS 版本 v24.16.0为例:

powershell
fnm install v24.16.0

4.3 使用该版本

powershell
fnm use v24.16.0

4.4 设为默认版本(可选)

新终端自动使用这个版本:

powershell
fnm default v24.16.0

4.5 node.js 验证

powershell
node -v
npm -v

看到版本号输出,环境就配好了。

五、进阶技巧

5.1项目级自动切换

在项目根目录创建一个 .node-version文件,写入版本号(如 20),进入该目录时 fnm 会自动切换到对应版本。

powershell
echo "20" > .node-version

这样不同项目用不同 Node 版本时,不用手动切,进目录自动生效。

5.2 常用命令速查

功能命令
安装指定版本fnm install <版本号>
列出已安装版本fnm list
切换版本fnm use <版本号>
设置默认版本fnm default <版本号>
卸载版本fnm uninstall <版本号>
当前使用版本fnm current

5.3 故障排除

问题解决方法
fnm 命令未找到检查 PATH 是否配置正确,或重启终端
权限错误始终以管理员身份运行 PowerShell
版本切换不生效检查项目目录是否有 .node-version 文件,或用 fnm current 确认当前版本

总结

这套配置一次完成,长期受益。以后无论你是开新项目、跑旧代码、还是跟着本专栏后续文章搭建 Vite 脚手架,Node.js 环境都已经准备好了