diff --git a/app/src/index.ts b/app/src/index.ts index a88afdc2..5e3fa9fc 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -102,30 +102,34 @@ if (require('electron-squirrel-startup')) { function server() { const binary = app.isPackaged - ? path.join(process.resourcesPath, 'ollama') - : path.resolve(process.cwd(), '..', 'ollama') + ? path.join(process.resourcesPath, 'ollama') + : path.resolve(process.cwd(), '..', 'ollama'); - const proc = spawn(binary, ['serve']) + const proc = spawn(binary, ['serve']); proc.stdout.on('data', data => { - logger.info(data.toString().trim()) - }) + logger.info(data.toString().trim()); + }); proc.stderr.on('data', data => { - logger.error(data.toString().trim()) - }) + logger.error(data.toString().trim()); + }); + - function restart() { - logger.info('Restarting the server...') - server() - } - - proc.on('exit', restart) + proc.on('exit', (code, signal) => { + if (code === 0 || code === null) { + logger.info('Server has stopped.'); + setTimeout(server, 5000); + } else { + logger.error(`Server exited with code: ${code}, signal: ${signal}`); + setTimeout(server, 3000); + } + }); app.on('before-quit', () => { - proc.off('exit', restart) - proc.kill() - }) + proc.off('exit', server); + proc.kill(); + }); } if (process.platform === 'darwin') {