在网络工作者中使用角度模块

问题描述 投票:0回答:1

我正在尝试在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:找不到名称'Document'。

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

Web worker无法访问DOM,因此您或任何其他导入的模块均无法使用窗口上的document对象。请参见answer对此解释清楚的T.J. Crowder的引用:

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

此外,别忘了将工作程序配置为模块类型:

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

angular web-worker
1个回答
0
投票

Web worker无法访问DOM,因此您或任何其他导入的模块均无法使用窗口上的document对象。请参见answer对此解释清楚的T.J. Crowder的引用:

© www.soinside.com 2019 - 2024. All rights reserved.