Angular 8 ng 测试 Web Worker 失败,并显示“DedicatedWorker 尚不支持模块脚本”

Exo*_*omp 2 unit-testing angular

使用 Angular CLI 创建一个新项目并生成一个 web-worker 和测试。

ng new demo
ng generate web-worker app
ng test --browsers=ChromeHeadless
Run Code Online (Sandbox Code Playgroud)

获取错误:

TypeError: Failed to construct 'Worker': Module scripts are not supported on DedicatedWorker yet. You can try the feature with '--enable-experimental-web-platform-features' flag (see https://crbug.com/680046)
Run Code Online (Sandbox Code Playgroud)

向命令行添加“--enable-experimental-web-platform-features”失败并显示“未知选项”。是否可以将“enable-experimental-web-platform-features”作为标志传递或有条件地配置它?

小智 6

我找到了解决方案。在脚本之后的'test'部分的angular.json中:[]需要像构建部分一样添加webWorkerTsConfig字段:

"webWorkerTsConfig": "tsconfig.worker.json"
Run Code Online (Sandbox Code Playgroud)

我的“测试”部分现在看起来像(这是空项目):

        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.spec.json",
            "karmaConfig": "karma.conf.js",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": [],
            "webWorkerTsConfig": "tsconfig.worker.json"
          }
        },
Run Code Online (Sandbox Code Playgroud)

希望能帮到你:)