自升级到 27 后 Jest 配置被忽略

Jest config ignored since upgrading to 27

我正在尝试将 NX monorepo 从 Angular 12 迁移到 Angular 13。作为此迁移的一部分,Jest 也更新到版本 27.2.3。该项目还使用了 CKEditor5 的自定义编辑器构建。

当 CKEditor 首次集成时(我相信当项目使用 Angular 9 时)我们在让它与 Jest 一起工作时遇到了很多问题,每当单元测试是 运行,包含 CKEditor 的任何组件都给出了错误消息:

SyntaxError: Cannot use import statement outside a module

我们通过将以下配置添加到项目根目录中的全局 jest.preset.js 文件来解决此问题:

transform: {
 'node_modules[\\/]@ckeditor.+.(js)$': 'babel-jest',
 '^.+.(ts|html)$': 'ts-jest',
},
transformIgnorePatterns: ['/node_modules/(?!@ckeditor|lodash).+.(js|jsx|ts|tsx|svg)$'],

但是,现在我们正在从 Angular 12 迁移到 13,上面的错误消息已经返回,而且上面的配置现在似乎被忽略了。

作为迁移的一部分,NX 已在 monorepo 的所有库中自动创建新的 project.json 文件。该文件包含一些 Jest 配置,因此我尝试使用 CKEditor 将上面的配置从 jest.preset.js 文件移动到任何库中的单个 project.json 文件,但这并没有解决问题。新的 project.json 文件还从特定项目 jest.config.js 中读取了一些 Jest 配置,所以我也尝试在那里添加配置,但也没有解决问题。

我还尝试将 package.json 中的 testEnviroment 配置从 "node" 更新为 "jsdom",但这也没有帮助。我还尝试将整个 transform/transformIgnorePatterns 配置移动到 package.json 的 Jest 部分,但这也没有帮助。

我假设我以前的工作配置只需要移动到另一个文件,只是不清楚它需要移动到哪个文件。

我的环境如下:

Windows10

节点 16.13.2

NPM 8.1.2

NX 13.4.5

杰斯特 27.2.3

Angular 13.1.2

已通过将以下配置添加到 Jest 预设文件并从单个 apps/libs 配置中删除相同配置来解决此问题:

transform: {
    'node_modules[\\/]@ckeditor.+\.(js)$': 'babel-jest',
    '^.+\.(ts|js|mjs|html|svg)$': 'jest-preset-angular',
},
transformIgnorePatterns: ['node_modules/(?!.*.mjs$|@ckeditor)'],

问题与内部有多个 strinfs 有关 transformIgnorePatterns - 它只支持一个项目,尽管它是一个数组