Node.js Electron.remote未定义

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);

我在使用电子方面有困难。正如您看到的标题,当我加载远程模块时,它说它未定义。这是条目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
});
我试着在这里遵循官方文件:


我不知道我错过了什么。任何建议都将不胜感激。

更新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').remotewebPreferences
中将
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,
     },
  });