Angular 8 和 jest - 找不到文件:jest-preset-angular/InlineHtmlStripStylesTransformer.js
Posted
技术标签:
【中文标题】Angular 8 和 jest - 找不到文件:jest-preset-angular/InlineHtmlStripStylesTransformer.js【英文标题】:Angular 8 and jest - File not found: jest-preset-angular/InlineHtmlStripStylesTransformer.js 【发布时间】:2020-02-18 06:52:01 【问题描述】:我刚刚使用 cli(v8 - 今天的最新版本)创建了 angular 应用程序。到目前为止我没有做任何特别的事情。 (ng new ng-app
)。
我使用jest-schematic 将笑话添加到我的 Angular 项目中。
cd ng-app
ng add @briebug/jest-schematic
问题是我在运行测试时遇到错误:npm run test
:
> jest
FAIL src/app/app.component.spec.ts
● Test suite failed to run
File not found: jest-preset-angular/InlinehtmlStripStylesTransformer.js (resolved as: C:\ng-app\jest-preset-angular\InlineHtmlStripStylesTransformer.js)
这里缺少什么?我该如何解决?
【问题讨论】:
【参考方案1】:在jest-preset-angular documentation中,正确的配置是这样的:jest-preset-angular/build/InlineFilesTransformer
。
所以在你的package.json
中更改以下行:
"astTransformers": [
"jest-preset-angular/InlineHtmlStripStylesTransformer.js"
]
到
"astTransformers": [
"jest-preset-angular/build/InlineFilesTransformer",
"jest-preset-angular/build/StripStylesTransformer"
]
【讨论】:
【参考方案2】:对我来说,package.json 中不存在 astTransformers。穷尽搜索,条目在 jest.impl.js 中,第 24 行。
(Angular 8.2.1。使用@nrwl/angular 8.2.7)
除此之外,应用相同的更改,将行更改为:
"astTransformers": [
"jest-preset-angular/build/InlineFilesTransformer",
"jest-preset-angular/build/StripStylesTransformer"
]
请注意该行的笑话团队的评论:
// TODO: This is hacky, We should probably just configure it in the user's workspace
// If jest-preset-angular is installed, apply settings
我绝对不喜欢编辑该文件,但是将更改放在 jest.config 文件中并没有解决问题(我希望 lib 将其作为选项来选择),如果它确实属于package.json,我不知道在哪里。
【讨论】:
【参考方案3】:已接受答案的语法已更改。如果您需要在 Angular 12.x 或 @nrwl/angular 12.x 上执行此操作,请尝试 -
在jest.config.js
-
module.exports =
// [...]
globals:
'ts-jest':
astTransformers:
before: [
'jest-preset-angular/build/InlineFilesTransformer',
'jest-preset-angular/build/StripStylesTransformer',
],
,
,
,
在package.json
-
"jest":
"globals":
"ts-jest":
"astTransformers":
"before": [
"jest-preset-angular/build/InlineFilesTransformer",
"jest-preset-angular/build/StripStylesTransformer"
]
参考 - Link
【讨论】:
以上是关于Angular 8 和 jest - 找不到文件:jest-preset-angular/InlineHtmlStripStylesTransformer.js的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 facebook jest 测试 .jsx 文件,找不到模块