не блокируйте основной процесс с помощью await ..
, вместо этого вызывайте его внутри app.on('ready', async () => {/* so your schedule process then call createWindow */}
и не пишите все внутри функции ..
как сейчасВы можете назначить асинхронную функцию on.ready ..
альтернативное решение
сделать что-то подобное
создать mainWindow, затем вызвать ваш планировщик через main черезipcRenderer ..
это должно работать ..
если окно не создано, то это должно быть где-то ваша ошибка ..
пример кода для ipcRendrer
// main.js
const {ipcMain} = require('electron')
/* start app, createWindow and all other code */
ipcMain.on('scheduler', (event, dataPassedFromRenderer) => {
/* do your schedule work */
// pass any data asynchronously to renderer process with
event.sender.send('scheduler', returnData)
}
теперь в коде рендерера
/* renderer.js in html or required file in html */
const {ipcRenderer} = require('electron')
// this will send event in main.js
ipcRederer.send('scheduler', 'send any type of data, can be left blank')
// this will listen for any response or event from main.js
ipcRederer.on('scheduler', (event, data) => {/* do if required */})