1. Uncaught TypeError: (intermediate value).globEager is not a function
vite5中import.meta.globEager
已经被废弃,改成使用import.meta.glob('*', { eager: true })
- const routesModules = import.meta.globEager('../views/**/router/*.js');
+ const routesModules = import.meta.glob('../views/**/router/*.js', { eager: true });
2. The CJS build of Vite's Node API is deprecated.
See vitejs.dev/guide/troub… for more details.
废弃用 CJS 节点 API
Vite 的 CJS Node API 已弃用。调用时require('vite')
,现在会记录弃用警告。您应该更新您的文件或框架以导入 Vite 的 ESM 版本。
在一个基础的Vite项目中,需要保证:
- 文件
vite.config.js
内容使用ESM语法。 - 最接近的
package.json
文件具有"type": "module"
,或使用.mjs
扩展名,例如vite.config.mjs
。
对于其他项目,有一些通用方法:
- 将 ESM 配置为默认值,如果需要,选择加入 CJS: 添加
"type": "module"
到项目中package.json
。所有*.js
文件现在都解释为 ESM,并且需要使用 ESM 语法。您可以使用扩展名重命名文件.cjs
来继续使用 CJS。 - 将 CJS 保留为默认值,如果需要,选择加入 ESM: 如果项目
package.json
没有"type": "module"
,则所有*.js
文件都将解释为 CJS。您可以使用扩展名重命名文件.mjs
以改用 ESM。 - 动态导入Vite: 如果需要继续使用CJS,改为
import('vite')
可以使用动态导入Vite。这要求你的代码是在async
上下文中编写的,但仍然应该易于管理,因为Vite的API大部分是异步的。
- 在package.json中添加
type:modle
"type": "module",
- 修改
vite.config.js
为vite.config.mjs
其他
其他总结中。。。