使用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();
我不知道自己错过了什么。任何建议都会非常感激。
答案 0 :(得分:46)
在电子10.0.0中,remoteModule
默认设置为false
。因此,如果要在JavaScript文件中使用const {BrowserWindow, dialog } = require('electron').remote;
,则必须在enableRemoteModule
中将true
设置为webPreferences
。
const w = new BrowserWindow({
webPreferences: {
enableRemoteModule: true
}
});
答案 1 :(得分:7)
remote
只需要在渲染过程中需要其他模块。在主要过程中,您只需直接从require('电子')获取模块。 1}}只是在不必要地添加了remote
的示例中完成了它。
渲染过程:
const { remote } = require('electron');
const { BrowserWindow } = remote;
主要流程:
const { BrowserWindow } = require('electron');
答案 2 :(得分:2)
remote 变得不确定,您要做的就是转到main.js并在webPreference set enableRemoteModule下创建窗口的同时添加以下对象:true 如图所示,那么您的问题将得到解决
win = new BrowserWindow({
width: 700,
height: 600,
hasShadow: true,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
},
});