56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
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); |