Windows系统中使用fnm自动管理node版本

1. 安装 fnm

  • 使用 Windows 包管理器 Winget:

    复制代码
    winget install Schniz.fnm

安装完成后,fnm 的可执行文件大致已在你的系统中,但 还没完全"生效" ,因为还要做 Shell 配置。


2. 配置 PowerShell

允许执行脚本 & 在配置文件里载入 fnm 环境命令。

2.1 允许执行脚本

打开 PowerShell(可用管理员权限,但一般「当前用户」级别就够)然后执行:

sql 复制代码
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

这样可以让你的用户可以执行脚本。

2.2 编辑 PowerShell 配置文件(Profile)

在 PowerShell 中运行以下命令以打开(或创建)你的 profile 文件:

bash 复制代码
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
Invoke-Item $PROFILE

然后在这个文件末尾添加下面这行:

css 复制代码
fnm env --use-on-cd --shell --resolve-engines powershell | Out-String | Invoke-Expression

这样做的目的:当你打开 PowerShell 或切换目录时,fnm 会设置好环境变量,以便 node/npm 路径正确并且切换版本生效。将 package.json#engines#node 视为有效的 Node.js 版本文件。然后关闭 PowerShell,再重新打开一个新窗口以让配置生效。 其他配置可见:github.com/Schniz/fnm/...


3. 使用 fnm 来安装 &切换 Node.js 版本

配置完毕后,就可以开始使用 fnm 来管理版本。下面是常用命令:

  • 安装某个版本:

    bash 复制代码
    fnm install 18.20.4
    # 或安装最新 LTS:
    fnm install --lts
  • 切换使用某个版本(当前 shell 会话立即生效):

    perl 复制代码
    fnm use 18.20.4
  • 查看当前使用的 Node 版本:

    sql 复制代码
    fnm current
  • 列出已安装版本:

    bash 复制代码
    fnm ls
  • 列出可安装的远程版本:

    复制代码
    fnm ls-remote
  • 设置某个版本为默认:

    arduino 复制代码
    fnm default 22.13.1
  • 在项目中指定版本:在项目根目录创建一个 .node-version(或 .nvmrc)文件,内容是版本号,例如 v18.20.4,然后每次进入该目录时 fnm 会自动切换(前提你配置了 --use-on-cd)


相关推荐
lpfasd1232 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
Data analyse4564 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai5 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记5 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁6 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu6 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!6 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
史瓦辛格6 小时前
给 DeepSeek Harness 写费用插件:把「这次会话花了多少钱」算准
前端·deepseek
星光不问赶路人6 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js
鸥梨菌Honevid6 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet