已启用ESM支持,Jest仍因uuid解析测试失败求助
解决Jest 29.7.0运行时uuid模块的ESM语法错误问题
针对你遇到的Jest解析uuid模块时出现的Unexpected token 'export'错误,可通过以下步骤排查解决:
1. 明确项目的ESM模式配置
如果项目未开启ESM模式,即使使用--experimental-vm-modules参数,Jest仍可能无法正确处理ESM依赖:
- 在项目根目录的
package.json中添加:"type": "module" - 若不想全局修改项目模块类型,可将Jest配置文件改为ESM格式(重命名为
jest.config.mjs),并添加:export default { extensionsToTreatAsEsm: ['.ts', '.js'] };
2. 让Jest处理node_modules中的uuid模块
默认Jest会忽略node_modules下的文件转换,但uuid的ESM版本未被编译为CommonJS,需调整配置让Jest转换该模块:
在Jest配置文件中添加:
export default { // 其他已有配置 transformIgnorePatterns: ['/node_modules/(?!uuid)/'], transform: { '^.+\\.(ts|js)$': 'ts-jest' // 确保ts-jest支持ESM转换 }, moduleFileExtensions: ['ts', 'js', 'json'] };
3. 优化启动命令
避免直接指定Jest的本地路径,改用pnpm的exec命令减少路径问题:
node --experimental-vm-modules $(pnpm bin jest) sample.test.ts
或在package.json的scripts中配置:
"scripts": { "test": "node --experimental-vm-modules jest" }
之后执行:
pnpm test sample.test.ts
4. 尝试升级uuid版本
uuid@8.3.2虽支持exports字段,但升级至最新的uuid@9.x版本可获得更好的Jest兼容性。
内容的提问来源于stack exchange,提问作者Auth Infant
相关产品推荐
相关产品推荐

