fix: electron backend not starting

This commit is contained in:
LukeGus
2026-05-22 16:16:14 -05:00
parent 3bb305bc38
commit 4c2a317f24
6 changed files with 24 additions and 17 deletions
+5 -1
View File
@@ -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(),
};
+3
View File
@@ -2021,12 +2021,15 @@ httpServer.on("error", (err: NodeJS.ErrnoException) => {
throw err;
});
export const serverReady = new Promise<void>((resolve) => {
httpServer.listen(HTTP_PORT, async () => {
if (!fs.existsSync(uploadsDir)) {
fs.mkdirSync(uploadsDir, { recursive: true });
}
await initializeSecurity();
resolve();
});
});
const sslConfig = AutoSSLSetup.getSSLConfig();
+2 -1
View File
@@ -137,7 +137,8 @@ import {
},
);
await import("./database/database.js");
const dbServer = await import("./database/database.js");
await (dbServer as unknown as { serverReady: Promise<void> }).serverReady;
await import("./ssh/terminal.js");
await import("./ssh/tunnel.js");
await import("./ssh/file-manager.js");
+1 -4
View File
@@ -143,14 +143,11 @@ export function ElectronLoginForm({
{t("serverConfig.changeServer")}
</span>
</button>
{!isEmbeddedServer && (
<div className="flex-1 mx-4 text-center">
<span className="text-muted-foreground text-sm truncate block">
{displayUrl}
{isEmbeddedServer ? t("serverConfig.localServer") : displayUrl}
</span>
</div>
)}
{isEmbeddedServer && <div className="flex-1" />}
<button
onClick={handleRefresh}
className="p-2 text-foreground hover:text-primary transition-colors"
+2 -1
View File
@@ -91,7 +91,8 @@ export function ElectronServerConfig({
setError(null);
try {
const maxRetries = 10;
await new Promise((r) => setTimeout(r, 1500));
const maxRetries = 15;
for (let i = 0; i < maxRetries; i++) {
if (await probeBackend()) {
setEmbeddedMode(true);
+2 -1
View File
@@ -31,7 +31,8 @@
"useEmbedded": "Use Local Server",
"embeddedDesc": "Run Termix with the built-in local server (no remote server needed)",
"embeddedConnecting": "Connecting to local server...",
"embeddedNotReady": "Local server is not ready yet. Please wait a moment and try again."
"embeddedNotReady": "Local server is not ready yet. Please wait a moment and try again.",
"localServer": "Local Server"
},
"versionCheck": {
"error": "Version Check Error",