web-dev-qa-db-ja.com

エラー:electronjsのapp.createWindowから画像を作成できませんでした

Electronjsを学習しています。始めたばかりのサンプル電子プロジェクトの1つでこのエラーが発生します。

エラー:C:\ Users\GS\Desktop\electron\example4\index.js 21:3のapp.createWindowから画像を作成できませんでしたここにindex.jsファイルコードがあります

const { app, BrowserWindow } = require('electron')
function createWindow () {
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    })
}
app.on("ready", createWindow);

なぜこれが起こっているのかはわかりませんが、1日前に作成した別のサンプルプロジェクトで動作している同じコードをコピーしました。それは非常に基本的な質問かもしれませんが、私は過去4〜5時間から理解しようとしていますが、それでも解決策は見つかりません。どんな助けでもいただければ幸いです

1
Ganesh

変数mainWindowは、関数createWindow ()の外部で宣言する必要があります。宣言しないと、関数の直後に、変数が表すBrowserWindowオブジェクトが有効なままになります(ガベージコレクションされます)。出た。これで問題が解決するはずです:

const { app, BrowserWindow } = require('electron')
let mainWindow = null;
function createWindow () {
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    })
}
app.on("ready", createWindow);
2
Free DOM

上記の答え(@ free-dom)は正しいですが、関数の外でmainwindow変数を宣言する必要はありません。関数の外でmainwindowを宣言していないかのように、次のように呼び出す必要がありますapp.whenReady().then(createWindow)

const { app, BrowserWindow } = require('electron')
function createWindow () {
    let mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    })
}
app.whenReady().then(createWindow);
0
Ganesh