Electron.remote 未定义
2016-06-17
66996
我在使用 Electron 时遇到了麻烦。正如您在标题中看到的,当我加载远程模块时,它显示未定义。这是入口 js 的代码:
const electron = require('electron');
const { app, BrowserWindow, Tray, remote, ipcMain } = electron;
function initApp() { ... }
app.on('ready', () => {
initApp();
console.log(electron); // object, but no remote inside
console.log(electron.remote); // undefined
console.log(remote); // undefined
});
我尝试遵循此处的官方文档: http://electron.atom.io/docs/api/remote/
使用
const { remote } = electron;
const { BrowserWindow } = remote;
let win = new BrowserWindow({width: 800, height: 600}); // error! BrowserWindow is not a constructor blabla
...
remote.getCurrentWindow().focus();
我不知道我遗漏了什么。任何建议都将不胜感激。
3个回答
更新 2020
,因为这个答案仍然出现在顶部。为了使原始答案在当前版本的 Electron 中工作,您需要在主进程中创建窗口时设置
enableRemoteModule
。
const myWindow = new BrowserWindow({
webPreferences: {
enableRemoteModule: true
}
});
原始答案:
remote
仅在需要渲染进程内部的其他模块时才需要。在主进程中,您只需直接从
require('electron')
获取模块即可。在示例中,它看起来像是只添加了
remote
。
渲染过程:
const { remote } = require('electron');
const { BrowserWindow } = remote;
主进程:
const { BrowserWindow } = require('electron');
Max
2016-06-18
在 electron 10.0.0 中,
remoteModule
默认设置为
false
。因此,如果您想在 JavaScript 文件中使用
const {BrowserWindow, dialog } = require('electron').remote;
,则必须在
webPreferences
中将
enableRemoteModule
设置为
true
。
const w = new BrowserWindow({
webPreferences: {
enableRemoteModule: true
}
});
Yumick Gharti
2020-08-27
remote 模块在 Electron 12 中已弃用,并将在 Electron 14 中删除。它由
@electron/remote
模块取代。
// Deprecated in Electron 12:
const { BrowserWindow } = require('electron').remote
// Replace with:
const { BrowserWindow } = require('@electron/remote')
// In the main process:
require('@electron/remote/main').initialize()
Ha0ran
2021-10-05