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