Electron Web Workers 不支持 NodeJS 模块
NodeJS modules not supported in Electron Web Workers
我正在使用 Electron 与 ReactJS 一起构建桌面应用程序。
我从第一个渲染器进程打开一个新的、不可见的 BrowserWindow 以启动另一个渲染器进程。在这个新的渲染器进程中,我注册了一个网络工作者,其中将定期调用 API 调用来获取数据。
这是不可见的 window HTML 脚本标签中用于注册网络工作者的代码:
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" 节点模块在开发中进行 fetch API 调用。为此,我使用 require("electron").remote.require("electron")。我收到以下错误:
开发工具错误:
这个错误让我相信网络工作者不支持 Electron NodeJS 模块。然而,Electron 文档 here 另有说明。
编辑了这个答案,因为它是旧的错误信息。
我能够解决我自己的问题。事实证明,只要你在后台启用nodeIntegrationwindow到运行web worker,你就可以在web worker中实际使用NodeJS。
引发我错误的是我通过 electron.remote() 请求节点模块。在 web worker 中,您可以像通常在节点中一样使用 require() 导入节点模块。
这篇 repository 详细介绍了如何在 Electron 中的网络工作者中使用节点模块。
我正在使用 Electron 与 ReactJS 一起构建桌面应用程序。
我从第一个渲染器进程打开一个新的、不可见的 BrowserWindow 以启动另一个渲染器进程。在这个新的渲染器进程中,我注册了一个网络工作者,其中将定期调用 API 调用来获取数据。
这是不可见的 window HTML 脚本标签中用于注册网络工作者的代码:
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" 节点模块在开发中进行 fetch API 调用。为此,我使用 require("electron").remote.require("electron")。我收到以下错误:
开发工具错误:
这个错误让我相信网络工作者不支持 Electron NodeJS 模块。然而,Electron 文档 here 另有说明。
编辑了这个答案,因为它是旧的错误信息。
我能够解决我自己的问题。事实证明,只要你在后台启用nodeIntegrationwindow到运行web worker,你就可以在web worker中实际使用NodeJS。
引发我错误的是我通过 electron.remote() 请求节点模块。在 web worker 中,您可以像通常在节点中一样使用 require() 导入节点模块。
这篇 repository 详细介绍了如何在 Electron 中的网络工作者中使用节点模块。