# 迷你收银台 - 问题说明与解决方案 ## 问题描述 为什么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. 显示主窗口 如有其他问题,请查看详细日志或联系技术支持。