BodyBalanceEvaluation/frontend/src/renderer/electron-dev.js

79 lines
2.1 KiB
JavaScript
Raw Normal View History

2025-08-15 10:12:38 +08:00
#!/usr/bin/env node
/**
* Electron开发调试启动脚本
* 用于在renderer目录下直接启动electron开发环境
*/
const { spawn } = require('child_process');
const path = require('path');
const fs = require('fs');
// 检查main.js是否存在
const mainPath = path.join(__dirname, '../main/main.js');
if (!fs.existsSync(mainPath)) {
console.error('❌ main.js文件不存在:', mainPath);
console.log('请确保main进程文件存在于 ../main/main.js');
process.exit(1);
}
// 检查preload.js是否存在
const preloadPath = path.join(__dirname, '../main/preload.js');
if (!fs.existsSync(preloadPath)) {
console.error('❌ preload.js文件不存在:', preloadPath);
console.log('请确保preload文件存在于 ../main/preload.js');
process.exit(1);
}
console.log('🚀 启动Electron开发环境...');
console.log('📁 Main进程文件:', mainPath);
console.log('📁 Preload文件:', preloadPath);
// 设置环境变量
process.env.NODE_ENV = 'development';
process.env.ELECTRON_IS_DEV = '1';
// 启动Vite开发服务器
console.log('\n🔧 启动Vite开发服务器...');
const viteProcess = spawn('npm', ['run', 'dev'], {
stdio: 'inherit',
shell: true,
cwd: __dirname
});
// 等待Vite服务器启动后启动Electron
setTimeout(() => {
console.log('\n⚡ 启动Electron应用...');
const electronProcess = spawn('npx', ['electron', mainPath], {
stdio: 'inherit',
shell: true,
cwd: __dirname
});
// 处理Electron进程退出
electronProcess.on('close', (code) => {
console.log(`\n🔚 Electron进程退出代码: ${code}`);
viteProcess.kill();
process.exit(code);
});
// 处理Vite进程退出
viteProcess.on('close', (code) => {
console.log(`\n🔚 Vite进程退出代码: ${code}`);
electronProcess.kill();
process.exit(code);
});
}, 3000); // 等待3秒让Vite服务器启动
// 处理进程信号
process.on('SIGINT', () => {
console.log('\n🛑 收到中断信号,正在关闭...');
viteProcess.kill();
process.exit(0);
});
process.on('SIGTERM', () => {
console.log('\n🛑 收到终止信号,正在关闭...');
viteProcess.kill();
process.exit(0);
});