在Web Worker中使用角度模块

时间:2019-10-16 13:19:21

标签: angular web-worker

我试图在WEB WORKER中使用angular 8 jit编译器,但是在尝试导入Compiler模块或web-worker.ts文件中的任何其他angular模块时遇到错误

/// <reference lib="webworker" />
import {Compiler } from '@angular/core';

addEventListener('message', ({ data }) =>
 {
  let response = `worker response to ` + data  ;


});       
  

node_modules/@angular/core/core.d.ts:13052:20-错误TS2304:找不到名称“文档”。

1 个答案:

答案 0 :(得分:1)

Web Worker没有对DOM的任何访问权,因此窗口或您导入的其他模块上的document对象均不可用。 请参见answer对此解释清楚的T.J. Crowder的引述:

  

服务工作者(通常是网络工作者)根本没有直接访问DOM的权限。而是让工作人员将信息发布到主线程,并让主线程中的代码酌情更新DOM。浏览器上JavaScript的线程模型是,只有一个主UI线程(运行页内代码的默认主线程)可以访问DOM。其他的都被隔离了。

此外,不要忘记将您的worker配置为模块类型:

@Injectable()
export class SomeWorkerService {
  private readonly worker = new Worker('./custom.worker', { type: 'module' }); 
  ...
}