Electron Web Workers不支持NodeJS模块

时间:2018-11-30 20:28:02

标签: javascript node.js electron web-worker

我正在与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错误: DevTools Error

此错误使我相信Web Worker不支持Electron NodeJS模块。电子文档here则相反。

2 个答案:

答案 0 :(得分:1)

我能够解决自己的问题。事实证明,只要在后台窗口中启用nodeIntegration来运行Web Worker,实际上就可以在Web Worker中使用NodeJS。

引发我的错误的是,我需要通过electron.remote()来使用节点模块。在Web worker中,您可以像通常在node中那样使用require()导入节点模块。

repository详细介绍了如何在Electron内部的Web Worker中使用节点模块。

答案 1 :(得分:0)

修改了此答案,因为它是旧的错误信息。