重启之后清除登录信息

This commit is contained in:
2025-07-15 19:55:59 +08:00
parent 4caff7542e
commit 0b2974e2c9
18 changed files with 1873 additions and 86 deletions

138
STARTUP_FIX.md Normal file
View File

@@ -0,0 +1,138 @@
# 应用启动问题修复说明
## 问题描述
运行 `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` - 启动测试脚本