ste*_*nja 9
TL;博士
至少升级以下 Jest 依赖项*,和 更新 Jest 和 Typescript 配置*您的项目可能需要额外的升级——我的需要。我发现与 (1) Angular 13 升级 + Jest 和 (2) Jest ESModule 支持相关的搜索结果最有帮助。
"@angular-builders/jest": "^13.0.2",
"jest": "^27.4.7",
"jest-preset-angular": "^11.0.1",
"ts-jest": "^27.1.2",
Angular 13 和 Jest:发生了什么变化?
Angular 13 中对 Jest 最具破坏性的重大更改是ESModule 工件 ( .mjs
)。Jest 在支持 CommonJS 模块的 Node 中运行。它具有对 ESModules 的实验性支持,并且需要额外的配置才能启用它。
升级jest-preset-angular
解决了第一个错误(反射子路径)并发现了第二个错误:
"@angular-builders/jest": "^13.0.2",
"jest": "^27.4.7",
"jest-preset-angular": "^11.0.1",
"ts-jest": "^27.1.2",
接下来我升级了@angular-builders/jest
,jest
和ts-jest
. 可能还需要更改您的 Jest 和 Typescript 配置。在您的tsconfig.json
ortsconfig.spec.json
中,检查它是否“具有ESMmodule
的pilerOptions
值,例如 ES2015 或 ES2020 等...”,如ts-lint 迁移文档中所述。
以下是我对项目的 Jest 配置所做的更改,但每个项目都略有不同。
$HOME/$PROJECT/node_modules/@angular/core/fesm2015/testing.mjs:7
import { getDebugNode, RendererFactory2, ?stringify, ?ReflectionCapabilities, Directive, Component, Pipe, NgModule, ?getInjectableDef, resolveForwardRef, ?NG_COMP_DEF, ?Render3NgModuleRef, ApplicationInitStatus, LOCALE_ID, ?DEFAULT_LOCALE_ID, ?setLocaleId, ?Render3ComponentFactory, ?pileComponent, ?NG_DIR_DEF, ?pileDirective, ?NG_PIPE_DEF, ?pilePipe, ?NG_MOD_DEF, ?transitiveScopesFor, ?patchComponentDefWithScope, ?NG_INJ_DEF, ?pileNgModuleDefs, NgZone, Compiler, COMPILER_OPTIONS, ?NgModuleFactory, ModuleWithComponentFactories, InjectionToken, Injector, InjectFlags, ?resetCompiledComponents, ?flushModuleScopingQueueAsMuchAsPossible } from '@angular/core';
^^^^^^
SyntaxError: Cannot use import statement outside a module
如果您仍然遇到问题,我在下面提供了指向每个迁移文档的链接。我仍在解决其他软件包的问题,但希望这能让你走上一条好路!
迁移和 ESM 支持文档
Angular 最新升级:https ://angular.io/guide/update-to-latest-version@angular-builders/jest
:https ://github./just-jeb/angular-builders/blob/master/MIGRATION.MD
jest-preset-angular
:https ://thymikee.github.io/jest-preset-angular/docs/next/guides/angular-13+/
ts-jest
ESM 支持:https ://kulshekhar.github.io/ts-jest/docs/guides/esm-support/
Jest ESM 支持:https ://jestjs.io/docs/ecmascript-modules
如果您仍然遇到Cannot use import
错误,请对已关闭的 GitHub 问题发表有用的评论:https ://github./thymikee/jest-preset-angular/issues/1149#issuement-963506942
更多推荐
node
发布评论