You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:52:38