在Electron渲染器进程中创建子窗口时,如何修复BrowserWindow不是构造函数错误 [英] How to fix BrowserWindow is not a constructor error when creating child window in Electron renderer process

查看:1162
本文介绍了在Electron渲染器进程中创建子窗口时,如何修复BrowserWindow不是构造函数错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用电子来构建包含两个窗口的应用程序。我正在尝试从渲染器进程内部打开第二个窗口,执行以下操作:

I'm using electron to build an application that includes two windows. I'm trying to open a second window from inside renderer process doing something like:

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

const childWindow = new BrowserWindow({
   width: 800,
   height: 600
});

我遇到一个错误,说


BrowserWindow不是构造函数。

BrowserWindow is not a constructor.

我的另一个选择是使用window.open,但这就是不理想,因为它返回功能受限的BrowserWindowProxy对象。

My other option is to use window.open, but that is not ideal since that returns BrowserWindowProxy object, which has limited functionality.

推荐答案

我发现我需要做的就是使用远程模块。
Electron不允许直接通过渲染器进程创建浏览器窗口,因为它(BrowserWindow)需要 ipc 模块与主进程进行通信。 Electron文档说:

I found that all I needed to do was to use the remote module. Electron doesn't allow to directly create a browser window from the renderer process, because it (BrowserWindow) requires ipc module to communicate with the main process. Electron documentation says:


在Electron中,与GUI相关的模块(例如对话框,菜单等)仅在主过程中可用,不在渲染器进程中。为了从渲染器进程中使用它们,ipc模块是将进程间消息发送到主进程所必需的。

In Electron, GUI-related modules (such as dialog, menu etc.) are only available in the main process, not in the renderer process. In order to use them from the renderer process, the ipc module is necessary to send inter-process messages to the main process.

因此,新电子。BrowserWindow()不起作用。
但是,使用 remote 模块正确设置与主进程的进程间通信,并且以下修改的代码对我有用:

So, new electron.BrowserWindow() doesn't work. However, using remote module correctly sets up inter-process communicating with the main process and the following modified code works for me:

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

const childWindow = new BrowserWindow({
   width: 800,
   height: 600
});

远程模块的更完整说明在这里: https://electron.atom.io/docs/api/remote/

A more complete explanation of remote module is here: https://electron.atom.io/docs/api/remote/

这篇关于在Electron渲染器进程中创建子窗口时,如何修复BrowserWindow不是构造函数错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆