个人博客自建指南(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):
- 右键点击左下角的 “开始”按钮(或按 Win + X)
- 选择 “终端” 或 “终端(管理员)”(如果后续需要管理员权限)
- 打开的窗口默认就是 PowerShell 环境
方法二(通用):
- 按键盘上的 Win键,输入 powershell
- 在搜索结果中点击 “Windows PowerShell” 或 “以管理员身份运行”
💡 本教程中如无特殊说明,所有命令默认均在 Windows 11 的 Windows Terminal(PowerShell 7+) 下运行,且测试通过。如果你使用的是其他版本(如 Windows 10),操作方式基本相同,但界面可能略有差异。
一、安装 fnm
1.1 下载安装包
由于常规的 winget install Schniz.fnm 在线安装脚本内部会去 GitHub 拉zip归档,国内网络常卡死,改用离线安装更稳:先用国内代理把 zip 下载到本地,再进行手动安装。
# 先建目录(如果还没有):
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 手动安装
解压到目标目录:
Expand-Archive -Path D:\fnm-windows\fnm-windows.zip -DestinationPath D:\fnm-windows验证:
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,运行:
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 盘,而且国内下载速度快得多。
保存后重新开一个终端,验证:
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 修改执行策略
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser提示时输入 Y回车。
3.3 创建 PowerShell 配置文件
New-Item -Path $PROFILE -ItemType File -Force3.4 编辑配置文件,添加 fnm 自动加载
notepad $PROFILE在打开的记事本中粘贴:
fnm env --use-on-cd | Out-String | Invoke-Expression保存关闭。
3.5 立即加载配置
. $PROFILE3.6 验证 fnm 安装
fnm --version四、安装并使用 Node.js
4.1 查看可用版本
fnm list-remote --lts会列出所有 LTS 版本号。
4.2 安装指定版本
以当前 LTS 版本 v24.16.0为例:
fnm install v24.16.04.3 使用该版本
fnm use v24.16.04.4 设为默认版本(可选)
新终端自动使用这个版本:
fnm default v24.16.04.5 node.js 验证
node -v
npm -v看到版本号输出,环境就配好了。
五、进阶技巧
5.1项目级自动切换
在项目根目录创建一个 .node-version文件,写入版本号(如 20),进入该目录时 fnm 会自动切换到对应版本。
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 环境都已经准备好了。