Files
dify_market_manager_gui/STARTUP_FIX.md

138 lines
4.1 KiB
Markdown
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.
# 应用启动问题修复说明
## 问题描述
运行 `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` - 启动测试脚本