// Native import { join } from 'path' import { format } from 'url' // Packages import { BrowserWindow, app, ipcMain, IpcMainEvent } from 'electron' import isDev from 'electron-is-dev' import prepareNext from 'electron-next' // Prepare the renderer once the app is ready app.on('ready', async () => { await prepareNext('./renderer') const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: false, contextIsolation: false, preload: join(__dirname, 'preload.js'), }, }) const url = isDev ? 'http://localhost:8000/' : format({ pathname: join(__dirname, '../renderer/out/index.html'), protocol: 'file:', slashes: true, }) mainWindow.loadURL(url) }) // Quit the app once all windows are closed app.on('window-all-closed', app.quit) // listen the channel `message` and resend the received message to the renderer process ipcMain.on('message', (event: IpcMainEvent, message: any) => { console.log(message) setTimeout(() => event.sender.send('message', 'hi from electron'), 500) })