mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-07-15 21:03:47 +00:00
fix: electron backend not starting
This commit is contained in:
+5
-1
@@ -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(),
|
||||
};
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user