diff --git a/run-command.mjs b/run-command.mjs index 1842fd90..2392a681 100644 --- a/run-command.mjs +++ b/run-command.mjs @@ -1,5 +1,5 @@ import { readFile, writeFile, unlink, mkdir, rm } from 'node:fs/promises'; -import { exec, spawn } from 'node:child_process'; +import { exec, fork } from 'node:child_process'; import { fileURLToPath } from 'node:url'; import { build } from 'esbuild'; @@ -26,19 +26,34 @@ for(let i = 2; i < process.argv.length; i++) if (error) throw error; console.log(stdout); }); + else if (process.platform === "win32") + exec("START", ["/B", "node", "backend.js"], (error, stdout) => { + if (error) throw error; + console.log(stdout); + }); else { - const server = spawn("node", - [fileURLToPath(new URL("./backend.js", import.meta.url))], - {cwd: process.cwd(), stdio: "inherit", detached: true} + const server = fork(fileURLToPath(new URL("./backend.js", import.meta.url)), + {detached: true} ); server.unref(); + server.disconnect(); } break; } case "stop": await writeFile(shutdown, ""); - try {await fetch(new URL("/test-shutdown", serverUrl))} + try { + const response = await Promise.race([ + fetch(new URL("/test-shutdown", serverUrl)), + new Promise(resolve => { + setTimeout(() => { + resolve("Error"); + }, 5000); + }) + ]); + if(response === "Error") throw new Error("Server is unresponsive."); + } catch (e) {await unlink(shutdown)} if (config.production) exec("npm run pm2-stop", (error, stdout) => {