我一直在 NX monorepo(没有 nxtend/nxext)中维护 Ionic-Angular 应用程序一段时间,到目前为止进展顺利。
但是,最后一次迁移到 NX 20.2.2 + Angular 19 破坏了我的 Jest 测试,并出现了此类错误:
import { __awaiter } from "tslib";
^^^^^^
SyntaxError: Cannot use import statement outside a module
这通常在 jest.config.ts 中通过更改“transformIgnorePattern”以包含来自 node_modules 的一些包来修复,以便它们包含在 ts-jest 编译中。
transformIgnorePatterns: ['/node_modules/(?!.*.mjs$|@ionic/core|@stencil/core|ionicons)'],
但最新版本打破了这一点,我不知道罪魁祸首是谁(NX、jest-preset-Angular、我自己的配置,还是其他什么?)。
我一直在尝试修复此问题,但没有成功,而且我不知道应该在哪里报告错误。
有人可以帮忙吗?
我提供了一个简单的项目来重现该问题。通过查看提交,您可以看到测试最初被破坏,然后被修复,然后在迁移后被破坏。
项目: https://github.com/ddx001/nx-ng-ionic
要运行,请签出项目并运行:
npm install
npx nx run myapp:test
经过一番调查,我发现了一个非常有用的线程和解决方案:Jest fix for ionic/stencil
简而言之:将 typescript 降级至 ~5.5.x。这对我很有帮助,现在测试又开始运行了。看起来这个问题仍然没有被 Ionic 解决。
但至少,这是一个快速解决方案。顺便说一句。我的设置和你一样。