fnm 是一款快速简单跨平台的 Node.js 版本管理器,使用 Rust 构建。
先用 fnm 安装/启用 Node(PowerShell)
先确认有没有 node/npm:
node -v
npm -v
如果提示找不到命令,就用 fnm 装一个 LTS(比如 Node 24):
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
fnm install 24
fnm use 24
fnm default 24
node -v
npm -v
npm i -g @openai/codex@latest
codex --version
codex
如果你已经能看到
node -v/npm -v输出,就可以直接跳到下一步。
让 PowerShell 每次打开都自动注入 PATH
把 fnm 的环境注入写进 $PROFILE,不然经常会出现“新开窗口 node 找不到”的问题:
notepad $PROFILE
在文件里加一行:
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
保存后重新打开 PowerShell,再跑一次:
node -v
npm -v
执行 notepad $PROFILE 时提示文件不存在
当执行 notepad $PROFILE 时提示文件不存在,是因为PowerShell配置文件尚未创建。PowerShell的$PROFILE变量指向当前用户配置文件的路径,但该文件默认不存在,需手动创建。
配置文件路径由PowerShell版本决定: 对于Windows PowerShell(v5.1), 路径通常为$env:USERPROFILE\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1; 对于PowerShell Core(v6+), 路径为$env:USERPROFILE\Documents\PowerShell\Microsoft.PowerShell_profile.ps1。 可通过运行$PROFILE命令查看具体路径。
创建配置文件的方法: 推荐使用PowerShell命令自动创建,避免手动操作。以管理员身份打开PowerShell,执行以下命令:
New-Item -Path $PROFILE -ItemType File -Force
此命令会创建文件及缺失的目录结构。创建后,使用notepad $PROFILE即可正常打开编辑。
常见问题处理: 如果遇到执行策略限制,可运行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser允许脚本执行。 若配置文件内容有语法错误(如conda初始化问题),需检查并修正错误,例如清理PATH环境变量中的多余引号。
pnpm
pnpm 不是 Node/npm 自带的,需要你额外安装/启用。而且用 fnm 切换不同 Node 版本时,“全局安装的工具”也可能跟着变(因为每个 Node 版本的全局 npm 目录是独立的)。
✅ 最佳实践:用 Corepack 管理 pnpm(推荐)
Corepack 是 Node 自带的“包管理器分发器”(Node ≥ 16.13 / 18+ 基本都带),最适合配合 fnm。
1) 确认版本
node -v
npm -v
2) 启用并激活 pnpm
# 切换 Node 版本后 pnpm 又没了
# 解决方式(简单粗暴且稳定):每次切完 Node 都跑一次
corepack enable
corepack prepare pnpm@latest --activate
pnpm -v
这会让
pnpm可用,而且你可以把 pnpm 版本“固定”在项目里,团队一致性最好。
3) 在项目里固定 pnpm 版本(强烈推荐)
在 package.json 加上:
{
"packageManager": "[email protected]"
}
以后新人只要:
corepack enable
pnpm -v
就能自动拿到项目指定版本(不会“我这台可以你那台不行”)。