我尝试在Angular 8 web worker中引入一个节点模块,但是出现了编译错误'无法找到模块'。有人知道如何解决吗?
我按照以上提到的ng文档中所描述的方式,在我的Electron项目中使用
一切都很正常,直到我添加了一些类似于
我按照以上提到的ng文档中所描述的方式,在我的Electron项目中使用
ng generate web-worker app
创建了一个新的worker。一切都很正常,直到我添加了一些类似于
path
或fs-extra
的引用:/// <reference lib="webworker" />
import * as path from 'path';
addEventListener('message', ({ data }) => {
console.log(path.resolve('/'))
const response = `worker response to ${data}`;
postMessage(response);
});
这个导入语句在任何其他的TS组件中都可以正常工作,但是在Web Worker中却会出现编译错误,错误信息如下:
Error: app/app.worker.ts:3:23 - error TS2307: Cannot find module 'path'.
我该如何解决这个问题?也许我需要在生成的tsconfig.worker.json
中添加一些附加参数?
要重现错误,请运行:
$ git clone https://github.com/hoefling/stackoverflow-57774039
$ cd stackoverflow-57774039
$ yarn build
或者查看项目在Travis上的构建日志build log。
注意:
1)我只找到了这个类似的问题,但是答案只处理自定义模块。
2)我使用了minimal electron seed进行了相同的导入测试,它使用了Web Worker,并且能够工作,但是该示例使用了不带Angular的纯JavaScript。
main.ts
中创建浏览器窗口的位置,添加nodeIntegrationInWorker: true
到webPreferences
下面即可。 - lukasgeiter