Fumadocs 在 Windows 上跑不起?ESM 路径加载报错快速定位指南
【免费下载链接】fumadocsThe beautiful & flexible React.js docs framework.项目地址: https://gitcode.com/GitHub_Trending/fu/fumadocs
从pnpm dev报错说起
刚把 Fumadocs 文档框架 clone 到电脑,在 Windows 11 上敲下pnpm dev,终端没弹首页,反而抛出一串红色的ERR_UNSUPPORTED_ESM_URL_SCHEME报错?这篇文章帮你把这次 ESM 路径加载错误的成因讲清楚,并按步骤带你修好它。
这个错误非常典型:只出现在开发服务器启动瞬间,页面完全渲染不出来。在 macOS 和 Linux 上跑得好好的,一换 Windows 就翻车,不少人在这里误以为是环境问题,白白折腾了很久。
症状与成因:为什么只有 Windows 中招
可观察到的表现:
- 报错发生在
pnpm dev启动后第一时间,关键报错行为:Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: "file", "data", and "node" are supported by the default ESM loader. Received protocol 'c:'
- 报错里的"协议"是盘符(
c:),这是路径被当成 URL 解析的铁证 - 同一份项目代码在 macOS / Linux 上启动正常,仅 Windows 下报错
- 报错与
fumadocs-mdx等包的版本强相关,老版本存在路径转 URL 的缺陷(当前仓库中fumadocs-mdx已升到 15.4.0)
成因其实不复杂:Fumadocs 用 Node.js 的 ESM loader 在启动时即时编译.mdx文档,loader 源码只接受file:///前缀的 URL。Windows 上如果传给 loader 的是C:\形式的裸路径而不是标准化的file:///C:/形式,ESM loader 就会把开头的C:认成协议名,不在白名单里,直接拒绝加载。
修复步骤
更新依赖到已修复版本
- 先确认当前版本:
pnpm list fumadocs-core fumadocs-mdx fumadocs-ui - 升级到修复版:
fumadocs-core≥ 13.4.5、fumadocs-mdx≥ 10.0.1、fumadocs-ui≥ 13.4.5;锁文件版本范围允许时直接执行pnpm update fumadocs-core fumadocs-mdx fumadocs-ui - 运行
pnpm install刷新锁文件,再pnpm dev重启开发服务器
手动校验生成产物
- 检查 next.config.mts 是否按文档要求用
createMDX()包了一层配置,本仓库示例中是withMDX(config),漏掉这步 loader 根本不会注册 - 启动后确认
.source目录是否正常生成(由 loader 在开发服务器启动时自动产出,配置见 source.config.ts) - 如果
.source目录缺失或内容不完整,删掉它(这只是你自己本地项目里的生成产物,可安全删除),再跑一次pnpm dev重新生成
同类问题自查清单
- 启动前用
node -e "console.log(process.version, process.platform)"确认 Node 版本与平台,Node 22.x 搭配老版fumadocs-mdx的组合最容易触发该报错 - 给 CI 加一条 Windows 矩阵,至少完整跑一遍
pnpm dev启动脚本,跨平台路径错误在 Linux 上不暴露,只能这样兜住 - 自己写路径与 URL 转换时一律走
pathToFileURL/fileURLToPath(loader 源码就是这个做法),别把裸C:\路径直接交给 ESM loader - 拉完仓库别跳过
pnpm install,先用pnpm list核对三包版本与文档要求一致,再启动开发服务器 - 中途升级过依赖时,先
pnpm why fumadocs-mdx检查依赖树,避免fumadocs-core、fumadocs-mdx、fumadocs-ui三件套版本混用引发兼容问题
收束
维护方通过版本更新修复了这类跨平台路径问题,社区对 Windows 场景的响应速度很快;下次再遇到这个报错,先查版本、再查路径,基本两分钟就能解决。
【免费下载链接】fumadocsThe beautiful & flexible React.js docs framework.项目地址: https://gitcode.com/GitHub_Trending/fu/fumadocs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考