- electron 10,
remote默认关闭,需要手动开启
找到项目中的 BrowserWindow 定义部分,手动设置 webPreferences 中的enableRemoteModule为true即可,添加部分如下:
win = new BrowserWindow({
webPreferences: {
nodeIntegration: true, // 赋予此窗口页面中的JavaScript访问Node.js环境的能力
// 在electron 10.0.0之后,remote模块默认关闭
// 必须手动设置webPreferences中的enableRemoteModule为true之后才能使用
enableRemoteModule: true, // 打开remote模块
},
});
- electron 12版本已被弃用,在14版本移除
官网:Removed: remote module
The remote module was deprecated in Electron 12, and will be removed in Electron 14. It is replaced by the @electron/remote module.
解决办法:
(1). 先安装@electron/remote包
npm i -D @electron/remote
(2). 主进程js文件中
// 在 new BrowserWindow webPreferences里添加 enableRemoteModule: true
app.on("ready", function () {
require("@electron/remote/main").initialize();
});
//或者是
const createWindow = () => {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 1200,
height: 600,
webPreferences: {
/*
__dirname 字符串指向当前正在执行脚本的路径 (在本例中,它指向你的项目的根文件夹)。
path.join API 将多个路径联结在一起,创建一个跨平台的路径字符串。
*/
preload: path.join(__dirname, "preload.js"),
enableRemoteModule: true, //必须项,不写无法获取,
},
});
require("@electron/remote/main").initialize();
require("@electron/remote/main").enable(mainWindow.webContents); //非必需
};
(3). 渲染进程中
// 14版本以下使用如下
const { BrowserWindow } = require("@electron/remote"); //这样来引入remote
//如果14版本以上还是无效,可用下面的试试
const { BrowserWindow } = require("@electron/remote/main");
console.log(BrowserWindow); //ƒ BrowserWindow() { [native code] }