const { app, BrowserWindow } = require('electron'); const path = require('path'); const { spawn } = require('child_process'); let mainWindow; let serverProcess; // Функция создания окна function createWindow() { mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { nodeIntegration: true, contextIsolation: false }, icon: path.join(__dirname, 'public/uikit/bot.png') // Попытка найти иконку }); // Запускаем сервер startServer(); // Ждем 1.5 сек для старта сервера и загружаем страницу setTimeout(() => { mainWindow.loadURL('http://localhost:3000'); }, 1500); } function startServer() { // ИСПРАВЛЕНИЕ: Используем __dirname, который указывает на корень проекта // Так как main.cjs лежит в корне, __dirname = C:\...\airllm-nodejs const appPath = __dirname; console.log("Запуск сервера из:", appPath); // Запускаем node server/server.js serverProcess = spawn('node', ['server/server.js'], { cwd: appPath, // Рабочая директория — корень проекта shell: true // Нужно для путей с пробелами (Robert Onelli) }); serverProcess.stdout.on('data', (data) => { console.log(`[Сервер]: ${data}`); }); serverProcess.stderr.on('data', (data) => { console.error(`[Ошибка сервера]: ${data}`); }); // При закрытии окна убиваем сервер app.on('window-all-closed', () => { if (serverProcess) serverProcess.kill(); if (process.platform !== 'darwin') app.quit(); }); } app.whenReady().then(createWindow);