ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Vite 配置文件报 This package is ESM only 怎么解决?

Vite 配置文件报 This package is ESM only 怎么解决? Vite 配置文件报 This package is ESM only 怎么解决【免费下载链接】viteNext generation frontend tooling. Its fast!项目地址: https://gitcode.com/GitHub_Trending/vi/vite运行vite启动开发服务器或vite build构建时如果配置文件里引入的某个依赖是 ESM only 包而配置本身被 Node.js 当作 CommonJS 加载就会在加载配置阶段失败。Vite 官方 troubleshooting 文档给出了两种报错形态下面是文档中的示例文本foo和路径在你的实际报错里会替换成真实的依赖名与文件路径Failed to resolve foo. This package is ESM only but it was tried to load by require.Error [ERR_REQUIRE_ESM]: require() of ES Module /path/to/dependency.js from /path/to/vite.config.js not supported. Instead change the require of index.js in /path/to/vite.config.js to a dynamic import() which is available in all CommonJS modules.官方文档对原因的描述是通过require引入一个 ESM only 包时会触发该错误在 Node.js 22 中ESM 文件默认不能通过require加载。解决办法就是把配置文件转成 ESM文档推荐两种方式任选其一。先确认 Node.js 版本Vite 要求 Node.js 版本 20.19、22.12部分模板可能要求更高的 Node.js 版本如果包管理器有提示请按提示升级。确认本地 Node.js 在支持范围内后再按下面步骤修改否则配置加载行为可能与文档描述不一致。方式一在最近的 package.json 中加入type: module找到离配置文件最近的package.json在其中加入type: module这一项加在你现有内容中不要覆盖整个文件{ name: my-app, type: module }配置完成后重新运行之前报错的命令即可。方式二把配置文件重命名为 .mjs / .mts如果不想影响整个包的模块类型可以直接改文件扩展名vite.config.js重命名为vite.config.mjsvite.config.ts重命名为vite.config.mtsVite 默认在项目根目录自动解析配置文件除vite.config.js外还支持其他 JS 和 TS 扩展名所以重命名后vite命令仍会找到它。如果之前是用vite --config my-config.js显式指定了配置文件该路径相对于当前工作目录解析需要把参数同步改成重命名后的文件名。验证重新运行之前失败的命令vite或vite build配置文件正常加载、不再出现This package is ESM only或ERR_REQUIRE_ESM报错且 dev server 能正常启动或构建正常进入产出阶段即说明修复完成。其他可行但非官方推荐的路径troubleshooting 文档同时说明使用 Node.js 的--experimental-require-module标志、使用 Node.js 22、或其他运行时可能让这个错误消失但官方仍推荐把配置转成 ESM。因此前两种方式是默认选择实验性标志只建议作为临时手段了解。另外作为背景从 Vite 7 起 Vite 以 ESM only 方式分发Vite 8 沿用相同的 Node.js 版本要求这也是生态中 ESM only 包变多、这类报错出现频率上升的原因。相关文档Troubleshooting: This package is ESM onlyConfiguring ViteInstalling ViteNode.js 版本要求说明【免费下载链接】viteNext generation frontend tooling. Its fast!项目地址: https://gitcode.com/GitHub_Trending/vi/vite创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表