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的主要内容,如果未能解决你的问题,请参考以下文章

在 nx 中使用 jest 时找不到模块

Jest+vue:“找不到模块 ....vue”

如何使用 facebook jest 测试 .jsx 文件,找不到模块

将 Swiper 6 升级到 7 后,在单元测试(开玩笑)上找不到模块“swiper_angular”

React-Redux/Jest 不变违规:找不到“商店”

Expo Jest 找不到像“file@2x.png”这样的图像