diff --git a/main.js b/main.js index 7da8a5d..a519dd9 100644 --- a/main.js +++ b/main.js @@ -2,6 +2,7 @@ const {app, BrowserWindow, shell} = require('electron') const path = require('path') const express = require('express') const eApp = express() +const portInUse = require('./portInUse.js') const frontendPath = 'frontend/' @@ -24,15 +25,24 @@ function createWindow() { // Hide the toolbar mainWindow.setMenuBarVisibility(false) - // Start a local express server to serve static files - eApp.use(express.static(path.join(__dirname, frontendPath))) - // Handle urls set by the frontend - eApp.get('*', (request, response, next) => { - response.sendFile(`${__dirname}/${frontendPath}index.html`); - }) - const server = eApp.listen(0, '127.0.0.1', () => { - console.log(`Server started on port ${server.address().port}`) - mainWindow.loadURL(`http://127.0.0.1:${server.address().port}`) + // We try to use the same port every time and only use a different one if that does not succeed. + let port = 45735 + portInUse(port, used => { + if(used) { + console.log(`Port ${port} already used, switching to a random one`) + port = 0 // This lets express choose a random port + } + + // Start a local express server to serve static files + eApp.use(express.static(path.join(__dirname, frontendPath))) + // Handle urls set by the frontend + eApp.get('*', (request, response, next) => { + response.sendFile(`${__dirname}/${frontendPath}index.html`); + }) + const server = eApp.listen(port, '127.0.0.1', () => { + console.log(`Server started on port ${server.address().port}`) + mainWindow.loadURL(`http://127.0.0.1:${server.address().port}`) + }) }) }