javascript - Electron Web Workers 不支持 NodeJS 模块

标签 javascript node.js electron web-worker

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

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

这是在不可见窗口 HTML 脚本标签中注册网络 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 worker 本身中,我需要“electron-is-dev” Node 模块在开发中调用 fetch API。为此,我使用 require("electron").remote.require("electron")。我收到以下错误:

开发工具错误: DevTools Error

这个错误让我相信 Electron NodeJS 模块在网络 worker 中不受支持。 Electron 文档 here然而,另有说法。

最佳答案

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

引发我错误的是我通过 electron.remote() 请求 Node 模块。在 web worker 中,您可以像通常在 Node 中一样使用 require() 导入 Node 模块。

repository详细介绍了如何在 Electron 中的网络 worker 中使用 Node 模块。

关于javascript - Electron Web Workers 不支持 NodeJS 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53564469/

相关文章:

javascript - 在 chrome 中使用 javascript 启用禁用样式表

javascript - 通过单击 div 启用/禁用所有音效 - javascript

node.js - 使用 Nodejs 和 Socket IO 的多人游戏

javascript - 协作绘画应用程序

node.js - 如何通过Electron注册JS对象?

c# - 是否可以在网络浏览器或框架中自动执行按钮点击和文本输入。如果有必要,甚至可以使用桌面工具?

javascript - 文档开头不允许使用 XML

node.js - 为什么 babel 将 .babel.json 存储在 USERPROFILE 路径中

html - 在 :after with inset border radius 中创建箭头

javascript - 如何处理 Electron 中的 blob 数据?