Electron.remote 未定义

新手上路,请多包涵

我在使用 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();

我不知道我错过了什么。任何建议都会非常感激。

原文由 modernator 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 750
2 个回答

更新 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 发布,翻译遵循 CC BY-SA 4.0 许可协议

在电子 10.0.0 中, remoteModule 默认设置为 false 。 So, if you want to use const {BrowserWindow, dialog } = require('electron').remote; in JavaScript file, then you must set enableRemoteModule as true in webPreferences .

 const w = new BrowserWindow({
    webPreferences: {
        enableRemoteModule: true
    }
});

链接: https ://github.com/electron/electron/blob/master/docs/breaking-changes.md#default-changed-enableremotemodule-defaults-to-false

原文由 Yumick Gharti 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进