minishouyin/doc/PROBLEM_SOLVED.md

89 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

2025-11-12 11:35:57 +08:00
# 迷你收银台 - 问题说明与解决方案
## 问题描述
为什么Web页面 (http://localhost:3000/) 正常,但使用"启动收银台.bat"启动后无法正常工作?
## 问题原因分析
### 1. 运行方式不同
- **Web开发模式** (`npm start`): 启动一个Web服务器通过浏览器访问
- **桌面应用模式** ("启动收银台.bat"): 启动Electron桌面应用创建独立的桌面窗口
### 2. 环境差异
- Web开发模式使用浏览器环境具有完整的Web API支持
- 桌面应用模式使用Electron环境某些浏览器功能可能受限
### 3. 权限和安全限制
- 桌面应用模式可能存在文件访问权限问题
- GPU加速在某些系统上可能不兼容
## 解决方案
### 1. 窗口显示增强
`src/main/main.js` 中增加了多重窗口显示保障机制:
- `ready-to-show` 事件处理
- `did-finish-load` 事件处理
- 窗口焦点管理
- 加载失败重试机制
### 2. 环境变量优化
在 "启动收银台.bat" 中设置了更多Electron环境变量
- `ELECTRON_DISABLE_GPU=1` - 禁用GPU加速避免兼容性问题
- `ELECTRON_NO_SANDBOX=1` - 禁用沙盒模式解决权限问题
- `ELECTRON_DISABLE_SANDBOX=1` - 进一步禁用沙盒
- `ELECTRON_ENABLE_LOGGING=1` - 启用详细日志
### 3. 错误处理改进
- 增加了详细的错误日志输出
- 添加了页面加载失败的重试机制
- 增强了图标加载失败的处理
## 使用说明
### 开发模式
```bash
npm start
```
然后在浏览器中访问 http://localhost:3000/
### 桌面应用模式
双击运行 "启动收银台.bat" 文件
### 构建项目
```bash
npm run build
```
## 常见问题
### 1. 图标加载失败
这是正常现象,不会影响应用功能。应用会使用默认图标。
### 2. GPU缓存错误
已通过禁用GPU加速解决不影响应用功能。
### 3. 窗口不显示
如果遇到窗口不显示的问题,请检查:
- 确保没有其他实例正在运行
- 检查任务管理器中是否有残留进程
- 重新构建项目后再次尝试
## 技术细节
### 项目结构
```
src/
├── main/ # Electron主进程代码
├── renderer/ # 渲染进程代码
├── server/ # 本地服务器代码
└── assets/ # 静态资源文件
```
### 启动流程
1. "启动收银台.bat" 设置环境变量
2. 启动本地服务器 (端口3000或3001)
3. 启动Electron应用
4. Electron应用加载本地服务器内容
5. 显示主窗口
如有其他问题,请查看详细日志或联系技术支持。