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

79 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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);
});