我试图在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:找不到名称“文档”。
答案 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' });
...
}