【问题标题】:using angular modules in web workers在网络工作者中使用角度模块
【发布时间】:2020-02-13 07:06:43
【问题描述】:

我正在尝试在 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:找不到名称“文档”。

【问题讨论】:

标签: angular web-worker


【解决方案1】:

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

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

另外,别忘了把你的worker配置成模块类型:

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

【讨论】:

  • 有没有办法在网络工作者中使用 Angular 编译器(需要 JIT 组件)?从'@angular/core'导入{Compiler};
猜你喜欢
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 2016-04-18
  • 2015-03-16
相关资源
最近更新 更多