# 应用启动问题修复说明 ## 问题描述 运行 `npm run dev` 时,程序在启动过程中立即退出,日志显示: ``` 13:03:04.627 > 应用启动,日志文件路径: C:\Users\coolp\AppData\Roaming\market-manager-gui\logs\main.log Process finished with exit code 0 ``` ## 问题原因分析 1. **WebSocketClient 过早初始化**:在应用启动时立即创建 WebSocket 连接,但此时可能缺少必要的配置信息 2. **异步操作处理不当**:`app.whenReady()` 是异步的,但程序在等待完成前就退出了 3. **错误处理不完善**:某些同步操作可能抛出异常导致程序退出 4. **缺少启动状态日志**:无法确定程序在哪个阶段退出 ## 修复内容 ### 1. 延迟 WebSocket 连接创建 - 将 WebSocketClient 的创建延迟到应用完全启动后 - 添加错误处理和重试机制 - 避免在应用启动时立即连接 ### 2. 改进错误处理 - 为所有可能失败的同步操作添加 try-catch - 改进未捕获异常的处理,不立即退出程序 - 添加详细的错误日志 ### 3. 增加启动日志 - 添加详细的启动过程日志 - 记录每个关键步骤的执行状态 - 便于定位问题所在 ### 4. 修复异步操作 - 确保 `app.whenReady()` 正确等待 - 添加启动完成确认日志 - 改进事件监听器的设置 ## 修复后的启动流程 ### 启动日志示例 ``` [时间] 当前运行平台: win32 [时间] Windows 系统,设置控制台编码为 UTF-8 [时间] Store 初始化成功 [时间] 硬件加速已禁用 [时间] 应用启动,日志文件路径: [路径] [时间] 开始检查单实例锁... [时间] 单实例锁检查结果: true [时间] 这是第一个实例,继续启动 [时间] 应用已准备就绪,开始初始化... [时间] 应用初始化完成 [时间] WebSocket连接已打开 (延迟2秒后) ``` ### 关键修复点 #### 1. WebSocketClient 延迟创建 ```javascript // 延迟创建WebSocket连接 setTimeout(() => { createWebSocketClient() }, 2000); // 延迟2秒创建WebSocket连接 ``` #### 2. 错误处理改进 ```javascript // 改进未捕获异常处理 process.on('uncaughtException', (error) => { logger.error('未捕获的异常:', error); // 不要立即退出,给应用一个恢复的机会 logger.error('应用遇到未捕获的异常,但将继续运行'); }); ``` #### 3. 同步操作保护 ```javascript try { app.disableHardwareAcceleration() logger.info('硬件加速已禁用') } catch (error) { logger.error('禁用硬件加速失败:', error) } ``` ## 验证修复效果 ### 1. 检查启动日志 运行 `npm run dev` 后,查看控制台输出,应该能看到完整的启动日志,包括: - 应用准备就绪 - 初始化完成 - WebSocket 连接成功 ### 2. 检查应用状态 - 应用应该正常启动并显示主窗口 - 托盘图标应该正常显示 - 不应该出现 "Process finished with exit code 0" 的提前退出 ### 3. 检查日志文件 查看日志文件 `C:\Users\coolp\AppData\Roaming\market-manager-gui\logs\main.log`,应该包含完整的启动过程记录。 ## 测试脚本 ### 启动测试 ```bash # 运行应用 npm run dev # 检查日志 tail -f "C:\Users\coolp\AppData\Roaming\market-manager-gui\logs\main.log" ``` ### 功能测试 1. 应用启动后,右键点击托盘图标 2. 选择"查看日志"验证日志功能 3. 选择"清除缓存"验证缓存清理功能 ## 注意事项 ### 1. 开发环境 - 在开发环境中,应用可能需要更长时间启动 - WebSocket 连接可能会因为缺少配置而失败,这是正常的 - 查看日志文件获取详细的错误信息 ### 2. 生产环境 - 确保所有必要的配置都已设置 - WebSocket 连接应该能够正常建立 - 应用应该能够稳定运行 ### 3. 调试建议 - 如果仍然有问题,查看日志文件中的详细错误信息 - 检查配置文件是否正确设置 - 确认网络连接是否正常 ## 相关文件 - `src/main/index.js` - 主进程启动文件 - `src/main/utils/WebSocketClient.js` - WebSocket 客户端 - `src/main/utils/logger.js` - 日志工具 - `test-startup.js` - 启动测试脚本