我正在使用 Electron 开发一个应用程序。
在主流程中,在我的
main.js
文件中,我有以下代码:
const win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
sandbox: false
}
});
然后在渲染器进程中,在我的 HTML 文件中,在加载的脚本中,我有以下内容:
const { systemPreferences } = require("electron");
但是
systemPreferences
来了undefined
。
当我在主进程中执行相同操作时,不会发生这种情况。
此外,我可以在渲染器进程中毫无问题地访问其他一些模块,例如
require("electron").shell
。
为什么会发生这种情况?如何直接在渲染器进程中使用
systemPreferences
?
好吧,我刚刚知道该怎么做。
过去您可以使用
require("electron").remote.systemPreferences
。但是 remote
已从 Electron 的默认包中删除。
但是你仍然可以通过这个 NPM 包启用它:https://www.npmjs.com/package/@ Electron/remote
安装该软件包后我所要做的就是:
在我的
main.js
:
require("@electron/remote/main").initialize();
require("@electron/remote/main").enable(win.webContents);
然后在我的渲染器进程中
index.js
:
const systemPreferences = require('@electron/remote').systemPreferences;
终于!