如何在启用nodeIntegration的情况下从渲染器进程访问一些电子模块?

问题描述 投票:0回答:1

我正在使用 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

electron
1个回答
0
投票

好吧,我刚刚知道该怎么做。

过去您可以使用

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;

终于!

© www.soinside.com 2019 - 2024. All rights reserved.