【问题标题】:How to import a typescript module inside a Web Worker in angular 8?如何在角度 8 的 Web Worker 中导入打字稿模块?
【发布时间】:2019-10-30 03:37:00
【问题描述】:

从 Angular 8 开始,您现在可以从 CLI 为您的应用生成 Web Worker。我完全按照官方指南做的:

https://angular.io/guide/web-worker

而且效果很好。

但是,一旦我尝试将任何模块导入到 app.worker.ts 的顶部:

import { MyData } from '../shared/shared.module';

然后我得到编译错误:

有没有其他方法可以将模块导入到 web worker 中?

【问题讨论】:

  • 就像一个可能有帮助的评论一样,我注意到 Angular 8 中的网络工作者的一件事是,导入任何标记为 @Injectable() 的东西都会导致这种错误。如果您的模块有任何使用 DI 的东西,这可能是导致此错误消息的原因。不幸的是,我还没有找到解决这个问题的方法。

标签: angular typescript web-worker


【解决方案1】:

我的问题是我尝试导入的这个共享模块是用ng generate module 创建的。这样做时,Angular 会自动导入 NgModuleCommonModule 并添加一个带有声明和导入的 @NgModule 到导出的类。这些使您可以访问 DOM,而 Web 工作者无法访问 DOM。这就是我所说的编译错误。即使我并没有真正使用这些导入,也不是我将这个模块导入 webworker 的原因。无论如何他们都在那里,他们正在导致错误。

我通过简单地从我的共享模块中删除 NgModuleCommonModule 和整个 @NgModule 的 2 个导入语句来修复它。然后它可以正常导入到 web worker 中,没有任何错误。

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 2018-05-01
    • 2017-06-04
    • 1970-01-01
    • 2017-04-11
    • 2017-05-29
    • 2023-03-21
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多