【发布时间】: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