使 ElectronJS mainWindow.loadURL() 异步

问题描述 投票:0回答:0

我有一个在电子实例中运行的 ExpressJS 服务器,并且 mainWindow.loadURL() 被定向到服务器视图 URL (localhost:3000),但是 mainWindow 在服务器能够启动之前启动,因此它无法获取视图。我尝试在运行后重新启动实例,但显然它也会重新启动服务器。

我试着用一个循环停止电子实例几秒钟,让 Express 服务器有时间启动,但这是一个非常平庸的解决方案。 我需要一种使用代码重新启动 Electron mainWindow 的方法,直到它能够从 Express 服务器获取登录页面,或者只要 Express 服务器能够完全启动就停止 Electron 实例。 注意:Express 服务器还运行一个 Moongose 实例,该实例在大约一秒后启动。

不知道代码是否有帮助,它只是一个普通的 Electron 基本 index.js 文件,多了 2 行:

const {app, BrowserWindow} = require('electron');
const server = require('./app'); // HERE I LOAD THE EXPRESS SERVER

let mainWindow

function createWindow () {
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    })

    mainWindow.loadURL('http://localhost:3000') // HERE I TRIED TO LOAD THE EXPRESS LANDING PAGE

    mainWindow.on('closed', function () {
        mainWindow = null
    })
}

app.on('ready', createWindow)

app.on('resize', function(e,x,y) {
    mainWindow.setSize(x, y);
});

app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') {
        app.quit()
    }
})

app.on('activate', function () {
    if (mainWindow === null) {
        createWindow()
    }
})
express asynchronous mongoose electron
© www.soinside.com 2019 - 2024. All rights reserved.