From 4c2a317f248fe6efc0192af9c678d322ea8af2c0 Mon Sep 17 00:00:00 2001 From: LukeGus Date: Fri, 22 May 2026 16:16:14 -0500 Subject: [PATCH] fix: electron backend not starting --- electron/main.cjs | 6 +++++- src/backend/database/database.ts | 13 ++++++++----- src/backend/starter.ts | 3 ++- src/ui/auth/ElectronLoginForm.tsx | 13 +++++-------- src/ui/auth/ElectronServerConfig.tsx | 3 ++- src/ui/locales/en.json | 3 ++- 6 files changed, 24 insertions(+), 17 deletions(-) diff --git a/electron/main.cjs b/electron/main.cjs index aceef2c9..4e34f161 100644 --- a/electron/main.cjs +++ b/electron/main.cjs @@ -423,6 +423,7 @@ app.commandLine.appendSwitch("--enable-features=NetworkService"); let mainWindow = null; let backendProcess = null; +let backendStartFailed = false; let tray = null; let isQuitting = false; @@ -657,6 +658,9 @@ function startBackendServer() { backendProcess.on("exit", (code, signal) => { logToFile(`Backend process exited with code ${code}, signal ${signal}`); + if (!resolved && code !== 0) { + backendStartFailed = true; + } backendProcess = null; if (!resolved) { resolved = true; @@ -1092,7 +1096,7 @@ ipcMain.handle("get-platform", () => { ipcMain.handle("get-embedded-server-status", () => { return { - running: backendProcess !== null && !backendProcess.killed, + running: backendProcess !== null && !backendProcess.killed && !backendStartFailed, embedded: !isDev, dataDir: isDev ? null : getBackendDataDir(), }; diff --git a/src/backend/database/database.ts b/src/backend/database/database.ts index 01a109ff..0c1ec5f7 100644 --- a/src/backend/database/database.ts +++ b/src/backend/database/database.ts @@ -2021,12 +2021,15 @@ httpServer.on("error", (err: NodeJS.ErrnoException) => { throw err; }); -httpServer.listen(HTTP_PORT, async () => { - if (!fs.existsSync(uploadsDir)) { - fs.mkdirSync(uploadsDir, { recursive: true }); - } +export const serverReady = new Promise((resolve) => { + httpServer.listen(HTTP_PORT, async () => { + if (!fs.existsSync(uploadsDir)) { + fs.mkdirSync(uploadsDir, { recursive: true }); + } - await initializeSecurity(); + await initializeSecurity(); + resolve(); + }); }); const sslConfig = AutoSSLSetup.getSSLConfig(); diff --git a/src/backend/starter.ts b/src/backend/starter.ts index 7685a7dc..a6d8aed8 100644 --- a/src/backend/starter.ts +++ b/src/backend/starter.ts @@ -137,7 +137,8 @@ import { }, ); - await import("./database/database.js"); + const dbServer = await import("./database/database.js"); + await (dbServer as unknown as { serverReady: Promise }).serverReady; await import("./ssh/terminal.js"); await import("./ssh/tunnel.js"); await import("./ssh/file-manager.js"); diff --git a/src/ui/auth/ElectronLoginForm.tsx b/src/ui/auth/ElectronLoginForm.tsx index 9824a30f..affa510e 100644 --- a/src/ui/auth/ElectronLoginForm.tsx +++ b/src/ui/auth/ElectronLoginForm.tsx @@ -143,14 +143,11 @@ export function ElectronLoginForm({ {t("serverConfig.changeServer")} - {!isEmbeddedServer && ( -
- - {displayUrl} - -
- )} - {isEmbeddedServer &&
} +
+ + {isEmbeddedServer ? t("serverConfig.localServer") : displayUrl} + +