迁移Ionic项目至Vitest遇Unexpected token 'export'错误求助
解决Ionic项目迁移Vitest时的SyntaxError: Unexpected token 'export'问题
问题原因
报错明确指出,@ionic/core包中的ES模块文件被当作CommonJS包处理,导致Node.js无法正确解析export语法,进而抛出SyntaxError。
解决方案
按照错误提示的临时方案修改你的vite.config.ts,将相关Ionic包加入Vitest的依赖内联列表,具体操作如下:
- 更新
vite.config.ts配置,添加test.deps.inline字段,包含@ionic/core和@ionic/react(错误栈中也涉及到@ionic/react):
import { defineConfig } from "vite"; export default defineConfig({ test: { globals: true, setupFiles: "src/setupTests.ts", deps: { inline: ["@ionic/core", "@ionic/react"] } }, });
- 若上述配置未解决问题,可额外添加模块解析条件,强制优先使用浏览器环境的ES模块版本:
import { defineConfig } from "vite"; export default defineConfig({ resolve: { conditions: ['browser', 'module'] }, test: { globals: true, setupFiles: "src/setupTests.ts", deps: { inline: ["@ionic/core", "@ionic/react"] } }, });
原理说明
deps.inline配置让Vitest直接内联处理指定依赖,跳过默认的CommonJS/ES模块转换逻辑,避免解析冲突。resolve.conditions指定模块解析时优先匹配的环境条件,确保加载的是适配浏览器的ES模块版本,而非Node.js的CommonJS版本。
内容的提问来源于stack exchange,提问作者Xero
相关产品推荐
相关产品推荐

