【问题标题】:NodeJS modules not supported in Electron Web WorkersElectron Web Workers 不支持 NodeJS 模块
【发布时间】:2019-05-03 00:26:40
【问题描述】:

我正在使用 Electron 和 ReactJS 构建一个桌面应用程序。

我从第一个渲染器进程打开一个新的、不可见的 BrowserWindow 以启动另一个渲染器进程。在这个新的渲染器进程中,我注册了一个 Web Worker,将定期调用 API 调用来获取数据。

这是在隐形窗口HTML脚本标签中注册web worker的代码:

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")。我收到以下错误:

开发工具错误:

这个错误让我相信网络工作者不支持 Electron NodeJS 模块。但是,Electron 文档 here 另有说明。

【问题讨论】:

    标签: javascript node.js electron web-worker


    【解决方案1】:

    编辑此答案,因为它是旧的不正确信息。

    【讨论】:

    • 感谢您的帮助 Nuffins。 ElectronJS 实际上现在确实在 web worker 中支持 NodeJS,如本文所述 [electronjs.org/docs/tutorial/multithreading](documentation).
    • 那真是太棒了,我不知道。我希望自己也有一种方法可以做到这一点,并发现关于它的原始帖子不受支持并继续前进。谢谢!
    【解决方案2】:

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

    我的错误是我通过 electron.remote() 需要节点模块。在 web worker 中,你可以像在 node 中一样使用 require() 导入 node 模块。

    这个repository 详细介绍了如何在 Electron 内部的网络工作者中使用节点模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-29
      • 2017-10-22
      • 2016-02-16
      • 2015-08-12
      • 2023-04-03
      • 2014-06-24
      • 1970-01-01
      相关资源
      最近更新 更多