我正在使用 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")。我收到以下错误:
开发工具错误:
这个错误让我相信 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/