Files
dify_market_manager_gui/STARTUP_FIX.md

4.1 KiB
Raw Blame History

应用启动问题修复说明

问题描述

运行 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 延迟创建

// 延迟创建WebSocket连接
setTimeout(() => {
  createWebSocketClient()
}, 2000); // 延迟2秒创建WebSocket连接

2. 错误处理改进

// 改进未捕获异常处理
process.on('uncaughtException', (error) => {
  logger.error('未捕获的异常:', error);
  // 不要立即退出,给应用一个恢复的机会
  logger.error('应用遇到未捕获的异常,但将继续运行');
});

3. 同步操作保护

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,应该包含完整的启动过程记录。

测试脚本

启动测试

# 运行应用
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 - 启动测试脚本