资讯动态

UnoCSS Node 23 翻车?一次讲清

发布时间:2026/9/8 22:38:26 来源:尧图企业网站定制
UnoCSS Node 23 翻车?一次讲清【免费下载链接】unocssThe instant on-demand atomic CSS engine.项目地址: https://gitcode.com/GitHub_Trending/un/unocssUnoCSS 65.5.0 起,Astro 项目在 Windows Node.js 23 下启动即炸,ERR_UNSUPPORTED_ESM_URL_SCHEME 直接砸脸。这篇讲清报错来路与两条出路。 现场还原:报错全文与触发条件astro dev 一敲,终端甩出完整报错:Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol d:什么组合会踩中?一张表说清:版本系统启动方式结果UnoCSS ≥ 65.5.0Windows(如 D: 盘符路径)astro dev,Node.js 23ERR_UNSUPPORTED_ESM_URL_SCHEME换 macOS / Linux,同版本一切正常——所以不是包坏了,是平台行为差异。⚡ 为什么会炸:四步因果链① UnoCSS 65.5.0 起,配置加载交给 unconfig;Node 23 下它不再用 jiti 转译,而是直接对 uno.config.ts 做动态 import② Node.js 23 把实验性的 Type Stripping 设为默认,原生 import 就能读 .ts③ import 传进去的是 Windows 绝对路径(D:\xxx\uno.config.ts),而 ESM 只认 file、data、node 协议的 URL④ d: 被当成协议头,加载器当场拒收,抛出 ERR_UNSUPPORTED_ESM_URL_SCHEME为什么只在 Windows 上炸?打个比方:你往导航里输地址 D:\work\uno.config.ts,加载器把开头的 D: 误读成网址协议(类似 http:// 里的 http),而它只接受 file:// 开头的地址——盘符路径不先换成 file:///D:/... 就进不了门。老版本里,jiti 在中间把路径翻译消化掉了,所以从没人见过这个错。️ 两条出路今天就要跑起来:临时绕过步骤项目根目录新建 .npmrc,写一行:shell-emulatortrue再把 package.json 的 dev 脚本改成:dev: NODE_OPTIONS--no-experimental-strip-types astro dev⚠️ 风险提示:NODE_OPTIONS... 前缀是 POSIX 写法,Windows 的 cmd 不会帮你套 shell,必须靠 shell-emulatortrue(或换 PowerShell / cross-env)才真正生效,只改一半等于白改。等更新 or 手动锁版本unconfig 后续版本补上了路径翻译:真正 import 之前,Windows 路径会被换成 ESM 认得的 file:// 形式。所以长期看两条路:等 UnoCSS 发布带修复的版本;或现在就动手,在 package.json 里用 overrides(yarn 是 resolutions)把 unconfig 锁到带修复的版本,例如 overrides: { unconfig: 修复版本 },不用干等上游。下次少踩坑☐ Node 23 跑工具链前,扫一眼依赖是否吃到 Type Stripping 这类实验特性,必要时用 NODE_OPTIONS 关掉☐ 裸 Windows 路径别直接塞给 ESM,交给 path 模块或 URL 类转一道☐ 升 UnoCSS 大版本,先在干净分支把 astro dev 和构建各跑一遍再合入报错只是表象,配置加载这层摸清,同类问题你自己就能排掉。相关入口:docs/integrations/astro.md、examples/astro/。【免费下载链接】unocssThe instant on-demand atomic CSS engine.项目地址: https://gitcode.com/GitHub_Trending/un/unocss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价