【问题标题】:Jest config ignored since upgrading to 27自升级到 27 后,Jest 配置被忽略
【发布时间】:2022-02-04 20:04:22
【问题描述】:

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

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

SyntaxError: 不能在模块外使用 import 语句

我们设法通过将以下配置添加到项目根目录中的全局 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 文件移动到任何 lib 中的单个 project.json 文件,但这并没有解决问题。新的 project.json 文件还从项目特定的 jest.config.js 中读取了一些 Jest 配置,所以我也尝试在那里添加配置,但这也没有解决问题。

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

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

我的环境如下:

Windows 10

节点 16.13.2

NPM 8.1.2

NX 13.4.5

开玩笑 27.2.3

Angular 13.1.2

【问题讨论】:

    标签: javascript angular typescript jestjs ckeditor


    【解决方案1】:

    已通过将以下配置添加到 Jest 预设文件中并从各个应用程序/库配置中删除相同的配置来解决此问题:

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

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

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 2016-09-13
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2021-12-24
      相关资源
      最近更新 更多