angular - 在网络工作者中使用角度模块
问题描述
我正在尝试在 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:找不到名称“文档”。
解决方案
Web Worker 对 DOM 没有任何访问权限,因此document
窗口上的对象对您或任何其他导入的模块均不可用。请参阅TJ Crowder这个解释清楚的答案中的引用:
服务工作者——一般的网络工作者——根本无法直接访问 DOM。相反,让工作人员将信息发布到主线程,并让主线程中的代码根据需要更新 DOM。浏览器上 JavaScript 的线程模型是只有一个主 UI 线程(您的页内代码运行的默认线程)可以访问 DOM。其他人都被它挡住了。
此外,不要忘记将您的工作人员配置为模块类型:
@Injectable()
export class SomeWorkerService {
private readonly worker = new Worker('./custom.worker', { type: 'module' });
...
}
推荐阅读
- python - Python datetime isoformat - 从字符串计算直到 bithday 的天数 - 转换为 datetime.datetime 对象
- javascript - 在转换器 konva.js 中为旋转器填充颜色
- php - 无效的 JSON 响应,尝试将数据从表单发送到操作文件
- chatbot - AIML 解析器示例
- php - WP 仅获取父类别的 ID
- reactjs - TouchableOpacity onPress 不工作(模拟器测试)
- arrays - excel数组错误 - 为某些用户而不是其他用户显示
- java - 使用 Java 从 JSON 中提取值
- windows - 如何通过批处理文件中的时间戳识别/获取文件?
- html - tag.class 和 .class:2 个场景