我正在与ElectroJS一起使用Electron构建一个桌面应用程序。
我从第一个渲染器进程中打开一个新的不可见的BrowserWindow,以启动另一个渲染器进程。在这个新的渲染器过程中,我注册了一个Web worker,将在其中定期调用API调用以获取数据。
这是不可见窗口HTML脚本标记中用于注册Web工作者的代码:
let installWebWorker = () => {
console.log("installWebWorker()");
if (typeof(Worker) !== "undefined") {
console.log("Web worker supported");
let monitorsWorker = new Worker("fetchMonitors.js");
} else {
console.log("Sorry! No Web Worker support...");
}
}; //end installWebWorker()
installWebWorker();
在fetchMonitors.js工作程序本身中,我需要“ electron-is-dev”节点模块来在开发中进行fetch API调用。为此,我使用require(“ electron”)。remote.require(“ electron”)。我收到以下错误:
DevTools错误:
此错误使我相信Web Worker不支持Electron NodeJS模块。电子文档here则相反。
答案 0 :(得分:1)
我能够解决自己的问题。事实证明,只要在后台窗口中启用nodeIntegration来运行Web Worker,实际上就可以在Web Worker中使用NodeJS。
引发我的错误的是,我需要通过electron.remote()来使用节点模块。在Web worker中,您可以像通常在node中那样使用require()导入节点模块。
此repository详细介绍了如何在Electron内部的Web Worker中使用节点模块。
答案 1 :(得分:0)
修改了此答案,因为它是旧的错误信息。