我有一个在电子实例中运行的 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()
}
})