NX 20.2.2+Angular19+Ionic8+Jest升级后测试失效求助
解决方案:NX 20.2.2 + Angular 19 下 Ionic-Angular Jest 测试 import 语法错误
方案1:更新 Jest 配置以兼容 ESM
升级后 NX/Jest 对 ESM 模块的处理逻辑发生变化,需调整 transformIgnorePatterns 并开启 ESM 支持:
在 jest.config.ts 中修改配置:
export default { preset: '@nx/jest/preset', // 保留原有其他配置 transformIgnorePatterns: [ '/node_modules/(?!.*.mjs$|@ionic/core|@stencil/core|ionicons|tslib)' ], extensionsToTreatAsEsm: ['.ts', '.mjs'], globals: { 'ts-jest': { useESM: true } } };
- 新增
tslib到不忽略列表(报错正来自此包) - 开启
ts-jest的 ESM 模式,指定需当作 ESM 处理的扩展名
方案2:切换到 ESM 专用 Jest 预设
Angular 19 采用 ESM 优先策略,需替换 Jest 预设为 ESM 版本:
修改 jest.config.ts 中的 preset 字段:
preset: 'jest-preset-angular/presets/default-esm',
此预设会自动适配 ESM 模块的编译规则,配合方案1中的 transformIgnorePatterns 调整,可解决多数兼容性问题。
方案3:清理缓存与重新安装依赖
缓存或损坏的依赖可能导致配置失效,执行以下命令重置环境:
npx nx reset rm -rf node_modules package-lock.json npm install
完成后重新运行测试:
npx nx run myapp:test
方案4:检查项目测试目标配置
确保 project.json 中测试目标的环境配置正确:
"test": { "executor": "@nx/jest:jest", "options": { "jestConfig": "apps/myapp/jest.config.ts", "environment": "jsdom", "passWithNoTests": true } }
jsdom 环境更适合浏览器端应用的测试,避免因环境不兼容导致的模块解析错误。
Bug 提交建议
若以上方案均无效,可优先向 NX 官方仓库提交 Bug(因问题出现在 NX 版本升级后),提交时附可复现项目及详细报错信息。
内容的提问来源于stack exchange,提问作者ddx001
相关产品推荐
相关产品推荐

