我正在尝试在 angular 项目的网络工作者中使用 tensorflow/tfjs (TF)。
使用该ng generate worker命令创建 web-worker工作正常。
在组件中导入 TF 也很好。
但是,在工作人员中导入 TF,即:
import * as tf from '@tensorflow/tfjs'
Run Code Online (Sandbox Code Playgroud)
通过ng build命令构建时会生成一堆缺少定义的错误。缺少的类型通常是与 DOM 相关的类型,例如error TS2304: Cannot find name ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement. 这些类型在 TF 的某些定义中使用,据我所知,这些类型不能被 web-workers 访问,因为DOM 操作不能从 workers 完成。我对此非常满意,我对 TF 的使用不依赖于这些类型。但是我仍然需要找到一种方法来构建我的工人。
因此,我试图修补该tsconfig.worker.json文件。我的第一次尝试是通过在compilerOptions.lib数组中添加“dom”来模仿其他 tsconfig* 文件:
["es2018", "webworker"]
Run Code Online (Sandbox Code Playgroud)
取而代之
["es2018", "webworker", "dom"]
Run Code Online (Sandbox Code Playgroud)
这会导致类型定义冲突
error TS6200: Definitions of the following identifiers conflict with those in another file …Run Code Online (Sandbox Code Playgroud)