electron 未定义电子遥控器

cig3rfwq  于 2022-12-08  发布在  Electron
关注(0)|答案(5)|浏览(187)

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

我不知道我错过了什么。任何建议将非常感谢。

w7t8yxp5

w7t8yxp51#

更新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');
9gm1akwq

9gm1akwq2#

在电子10.0.0中,remoteModule默认设置为false,因此,如果要在JavaScript文件中使用const {BrowserWindow, dialog } = require('electron').remote;,则必须在webPreferences中将enableRemoteModule设置为true

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

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

7vhp5slm

7vhp5slm3#

远程模块在Electron 12中已弃用,并将在Electron 14中删除。它将由@electron/remote模块取代。
第一个

dxxyhpgq

dxxyhpgq4#

remote在electronic中有时会变得未定义您所要做的就是转到main.js并在webPreference set下创建窗口时添加以下对象enableRemoteModule:false如下图所示,您的问题将得到解决

win = new BrowserWindow({
    width: 700,
    height: 600,
    hasShadow: true,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
     },
  });
3pvhb19x

3pvhb19x5#

我启用了远程模块,仍然

index.html:43 Uncaught TypeError: Cannot read properties of undefined (reading 'getCurrentWindow')

用于

const remote = require('electron').remote;

(或)

const { remote } = require('electron');

同时使用

remote.getCurrentWindow().close();

我加了

webPreferences: {
            nodeIntegration: true,
            contextIsolation: false,
            enableRemoteModule: true,
    }

相关问题