版本
11.1.1
重现步骤
主分支是在我添加esModule库引用之前,例如 lodash-es add_esmodule-lib-reference分支包含 esModule 库引用,这就是问题所在。
- 克隆我的仓库:https ://github.com/chikakow/ng13-jest-esm-import-repro
- 留在主分支。然后
yarn install
npm run test
. 验证 app.component.spec.ts 是否通过。- 将分支切换到add_esmodule-lib-reference
npm run test
. 请注意,lodash-es 包中的测试失败。- 打开 jest.config.js 并取消注释 transformIgnorePatterns 代码。
npm run test
. 请注意,您会收到“Jest 无法解析文件。” 错误。
预期行为
在 Angular 13 更新之前,transformIgnorePatterns 工作正常,并且在运行 jest 之前编译了 lodash-es 等 esModule 库。
更新前的代码:/
const esModules = ['lodash-es', 'echarts', 'zrender'].join('|'); ... transformIgnorePatterns: [
node_modules /(?!${esModules}).+(js|jsx)$, ], ...
Angular 13 更新后的代码:/
const esModules = ['lodash-es', 'echarts', 'zrender'].join('|'); ... transformIgnorePatterns: [ 'node_modules/(?!.*.mjs$)',
node_modules /(?!${esModules}).+(js|jsx)$, ] ... ,
在 Angular 13 更新之后,我把由于我试图只覆盖 transformIgnorePatterns 并添加了新记录的覆盖模式 'node_modules/(?!.*.mjs$)',
,Jest 不应该抛出 “Jest failed to parse a file”。错误,测试应该通过。
实际行为
Jest 抛出 “Jest 无法解析文件。” 错误并且测试失败。
环境
System:
Windows 10 Pro
Binaries:
Node 16.14.0
Npm: 8.3.1
Yarn: 1.22.17
Packages:
Angular Core 13.2.0
Angular Cli 13.2.5
Jest 27.5.1
Typescript: 4.5.2