Node.js Electron.remote未定义
我在使用电子方面有困难。正如您看到的标题,当我加载远程模块时,它说它未定义。这是条目js的代码:Node.js Electron.remote未定义,node.js,electron,Node.js,Electron,我在使用电子方面有困难。正如您看到的标题,当我加载远程模块时,它说它未定义。这是条目js的代码: const electron = require('electron'); const { app, BrowserWindow, Tray, remote, ipcMain } = electron; function initApp() { ... } app.on('ready', () => { initApp(); console.log(electron);
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
});
我试着在这里遵循官方文件:
与
我不知道我错过了什么。任何建议都将不胜感激。更新2020,因为这个答案仍然出现在顶部。要使原始答案在当前版本的Electron中工作,您需要在主进程中创建窗口时设置
启用RemoteModule
const myWindow = new BrowserWindow({
webPreferences: {
enableRemoteModule: true
}
});
原始答复:
remote
仅在渲染过程中需要其他模块时才需要。在主流程中,您只需直接从require('electron')
获取模块。在本例中,这看起来是通过不必要地添加remote
来完成的
渲染过程:
const { remote } = require('electron');
const { BrowserWindow } = remote;
主要流程:
const { BrowserWindow } = require('electron');
在electron 10.0.0中,
remoteModule
默认设置为false
。因此,如果您想使用const{BrowserWindow,dialog}=require('electron').remote在JavaScript文件中,则必须在webPreferences
中将enablemotemodule
设置为true
const w = new BrowserWindow({
webPreferences: {
enableRemoteModule: true
}
});
链接:远程有时在electron中会变得未定义。您所要做的就是转到main.js并添加以下对象,同时在webPreference set下创建一个窗口启用远程模块:true,如下所示,然后您的问题就会得到解决
win = new BrowserWindow({
width: 700,
height: 600,
hasShadow: true,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
},
});
您是否在渲染进程中运行此代码?不,它是主进程。这就是您的问题所在<代码>远程
仅在渲染过程中需要其他模块时才需要。在主流程中,只需直接从require('electron')
获取模块即可。看起来你是这样做的,你只需要删除remote
..@Teak你应该把你的评论转换成答案。谢谢,我想我误解了电子远程模块,现在我解决了我的问题。谢谢你的回答,柚木。正如瓦迪姆所说,最好写下你的评论来回答类型脚本和渲染器进程中的代码>在windows上抛出错误,但在mac os上运行良好。我刚刚得到未捕获的类型错误:无法破坏“remote”的属性“BrowserWindow”,因为它未定义。
非常感谢您在2020年对答案进行了深思熟虑的更新!我不明白为什么我的“remote”没有定义。enablemotemodule:true
是更新版本的Electron所需要的。我已将enablemotemodule设置为true,但我仍然面临相同的错误。谢谢!真的错过了enablemotemodule
。发发慈悲吧,我花了2天时间才找到。你应该知道remote
已被弃用,可能会在2021年底之前从新版本中删除。
win = new BrowserWindow({
width: 700,
height: 600,
hasShadow: true,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
},
});