/** * В Electron (особенно после рестарта в dev) stdout/stderr часто уже закрыты. * Обычный `console.error` тогда даёт EPIPE и валит main process диалогом Uncaught Exception. */ function isBrokenPipe(err: unknown): boolean { const code = (err as NodeJS.ErrnoException | undefined)?.code; return code === 'EPIPE' || code === 'ERR_STREAM_DESTROYED'; } export function installStdoutEpipeGuards(): void { for (const stream of [process.stdout, process.stderr]) { stream?.on('error', (err: NodeJS.ErrnoException) => { if (isBrokenPipe(err)) return; }); } } export function safeConsoleError(...args: unknown[]): void { try { console.error(...args); } catch (err) { if (isBrokenPipe(err)) return; throw err; } }