首页 > 解决方案 > 在网络工作者中使用角度模块

问题描述

我正在尝试在 WEB WORKER 中使用 angular 8 jit compler,但是在尝试在 web-worker.ts 文件中导入 Compiler 模块或任何其他 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:找不到名称“文档”。

标签: angularweb-worker

解决方案


Web Worker 对 DOM 没有任何访问权限,因此document窗口上的对象对您或任何其他导入的模块均不可用。请参阅TJ Crowder这个解释清楚的答案中的引用:

服务工作者——一般的网络工作者——根本无法直接访问 DOM。相反,让工作人员将信息发布到主线程,并让主线程中的代码根据需要更新 DOM。浏览器上 JavaScript 的线程模型是只有一个主 UI 线程(您的页内代码运行的默认线程)可以访问 DOM。其他人都被它挡住了。

此外,不要忘记将您的工作人员配置为模块类型:

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

推荐阅读