init
This commit is contained in:
38
scripts/start-electron.js
Normal file
38
scripts/start-electron.js
Normal file
@@ -0,0 +1,38 @@
|
||||
// Waits for Vite dev server, then launches Electron with ELECTRON_RUN_AS_NODE
|
||||
// removed from environment (any value of that variable causes Electron to run
|
||||
// as plain Node.js instead of a GUI app).
|
||||
const { spawn } = require('child_process');
|
||||
const http = require('http');
|
||||
const electronPath = require('electron');
|
||||
|
||||
const VITE_URL = 'http://localhost:5173';
|
||||
const POLL_INTERVAL = 500;
|
||||
const MAX_WAIT_MS = 60000;
|
||||
|
||||
function waitForVite(url, timeout) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const deadline = Date.now() + timeout;
|
||||
const check = () => {
|
||||
http.get(url, (res) => {
|
||||
res.resume();
|
||||
resolve();
|
||||
}).on('error', () => {
|
||||
if (Date.now() >= deadline) return reject(new Error('Timed out waiting for ' + url));
|
||||
setTimeout(check, POLL_INTERVAL);
|
||||
});
|
||||
};
|
||||
check();
|
||||
});
|
||||
}
|
||||
|
||||
console.log('Waiting for Vite at', VITE_URL, '...');
|
||||
waitForVite(VITE_URL, MAX_WAIT_MS).then(() => {
|
||||
console.log('Vite ready — starting Electron');
|
||||
const env = { ...process.env };
|
||||
delete env.ELECTRON_RUN_AS_NODE;
|
||||
const child = spawn(electronPath, ['.'], { stdio: 'inherit', env });
|
||||
child.on('close', code => process.exit(code ?? 0));
|
||||
}).catch(err => {
|
||||
console.error(err.message);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user