我在使用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();
我不知道我错过了什么。任何建议将非常感谢。
5条答案
按热度按时间w7t8yxp51#
更新2020,因为这个答案仍然出现在顶部。为了让原来的答案在当前版本的Electron中工作,你需要在主进程中创建窗口时设置
enableRemoteModule
。原文回答:
remote
只在需要渲染进程中的其他模块时才需要。在主进程中,您只需直接从require('electron')
获取模块。看起来像是在示例中添加了不必要的remote
。渲染过程:
主要工艺流程:
9gm1akwq2#
在电子10.0.0中,
remoteModule
默认设置为false
,因此,如果要在JavaScript文件中使用const {BrowserWindow, dialog } = require('electron').remote;
,则必须在webPreferences
中将enableRemoteModule
设置为true
。链接:https://github.com/electron/electron/blob/master/docs/breaking-changes.md#default-changed-enableremotemodule-defaults-to-false
7vhp5slm3#
远程模块在Electron 12中已弃用,并将在Electron 14中删除。它将由
@electron/remote
模块取代。第一个
dxxyhpgq4#
remote在electronic中有时会变得未定义您所要做的就是转到main.js并在webPreference set下创建窗口时添加以下对象enableRemoteModule:false如下图所示,您的问题将得到解决
3pvhb19x5#
我启用了远程模块,仍然
用于
(或)
同时使用
我加了