Electron レンダラープロセスで子ウィンドウを作成するときに、BrowserWindow がコンストラクターではないというエラーを修正する方法 質問する

Electron レンダラープロセスで子ウィンドウを作成するときに、BrowserWindow がコンストラクターではないというエラーを修正する方法 質問する

私は、2 つのウィンドウを含むアプリケーションを構築するために Electron を使用しています。レンダラー プロセス内から 2 番目のウィンドウを開こうとしています。次のような操作を行います。

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

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

というエラーが表示されます

BrowserWindow はコンストラクターではありません。

他の選択肢としては、window.open を使用することですが、機能が制限された BrowserWindowProxy オブジェクトを返すため、理想的ではありません。

ベストアンサー1

必要なのはモジュールを使うことだけだと分かりましたremote。Electron では、メイン プロセスと通信するためにモジュール (BrowserWindow) が必要なため、レンダラー プロセスからブラウザ ウィンドウを直接作成することはできませんipc。Electron のドキュメントには次のように書かれています。

Electron では、GUI 関連のモジュール (ダイアログ、メニューなど) はメイン プロセスでのみ使用可能であり、レンダラー プロセスでは使用できません。レンダラー プロセスからそれらを使用するには、メイン プロセスにプロセス間メッセージを送信するための ipc モジュールが必要です。

つまり、new electron.BrowserWindow()動作しません。ただし、remoteモジュールを正しく使用すると、メイン プロセスとのプロセス間通信が設定され、次の修正されたコードが動作します。

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

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

モジュールのより詳細な説明はremoteここにあります:リモート

おすすめ記事