# MeshRay 前端嵌入验证清单 ## ✅ 验证步骤 ### 1. 检查 embed.go 配置 **文件**: `web/embed.go` ```go //go:embed all:static var WebAssets embed.FS ``` ✅ 正确 - 使用 `all:static` 嵌入 static 目录 --- ### 2. 检查 server.go 路由 **文件**: `internal/api/server.go` **关键代码**: ```go // 剥离 static 外层目录 if embedFS, err := fs.Sub(web.WebAssets, "static"); err == nil { staticFS = embedFS } // 注册根路径 s.engine.GET("/", func(c *gin.Context) { file, err := staticFS.Open("index.html") if err == nil { content, _ := io.ReadAll(file) c.Data(200, "text/html; charset=utf-8", content) return } }) ``` ✅ 正确 - 根路径和 NoRoute 都已配置 --- ### 3. 编译验证 ```bash cd e:\Project\MeshRay go build -o meshray.exe . ``` ✅ 编译成功,无错误 --- ### 4. 运行测试 ```bash ./meshray.exe ``` **预期日志**: ``` 使用内嵌的静态文件 🌐 MeshRay 启动成功! 📍 访问地址:http://localhost:8080 ``` --- ### 5. 浏览器访问 打开浏览器访问:`http://localhost:8080` **预期效果**: - ✅ 显示 MeshRay 登录页面或仪表盘 - ✅ Vue 3 + Element Plus 正常加载 - ✅ Tailwind CSS 样式生效 - ✅ 页面布局完整(侧边栏 + 主内容) --- ## 🔍 常见问题排查 ### 问题 1: 访问 http://localhost:8080 显示空白页 **可能原因**: - ❌ CDN 资源加载失败(网络问题) - ❌ JavaScript 执行错误 - ❌ 路由配置问题 **解决方法**: 1. 打开浏览器开发者工具 (F12) 2. 查看 Console 错误信息 3. 检查 Network 面板 CDN 资源是否加载成功 --- ### 问题 2: 显示 "Failed to load index.html" **可能原因**: - ❌ embed.go 配置错误 - ❌ static 目录不存在 - ❌ 编译时未包含 web 包 **解决方法**: ```bash # 检查 static 目录是否存在 ls web/static/ # 重新编译 go clean go build -o meshray.exe . ``` --- ### 问题 3: API 请求失败 **可能原因**: - ❌ 后端服务未启动 - ❌ API 路径错误 - ❌ CORS 问题 **解决方法**: 1. 检查后端日志 2. 确认 API 路径:`/api/v1/...` 3. 开发环境需要 CORS 中间件 --- ## 📋 文件清单 ### 必须存在的文件 ``` e:\Project\MeshRay\ ├── web/ │ ├── static/ │ │ ├── index.html ✅ 主页面 │ │ └── js/ │ │ └── app.js ✅ Vue 应用 │ └── embed.go ✅ Go embed 配置 ├── internal/ │ └── api/ │ └── server.go ✅ 路由配置 └── meshray.exe ✅ 编译产物 ``` --- ## 🎯 验证命令 ### PowerShell 一键验证 ```powershell # 1. 检查文件存在 Test-Path web/static/index.html Test-Path web/static/js/app.js Test-Path web/embed.go # 2. 清理并重新编译 go clean go build -o meshray.exe . # 3. 运行程序 ./meshray.exe # 4. 等待 3 秒后测试 API Start-Sleep -Seconds 3 Invoke-RestMethod http://localhost:8080/health ``` --- ## 🐛 调试技巧 ### 1. 启用详细日志 在 `server.go` 中添加: ```go s.logger.Info("静态文件内容:", zap.Any("files", staticFS)) ``` ### 2. 测试根路径 ```bash curl http://localhost:8080/ ``` 应该返回 HTML 内容 ### 3. 测试 API ```bash curl http://localhost:8080/health ``` 应该返回:`{"status":"ok"}` --- ## ✅ 成功标准 - [x] 编译无错误 - [ ] 程序启动成功 - [ ] 访问 http://localhost:8080 显示页面 - [ ] Vue 应用正常加载 - [ ] API 调用成功 - [ ] 控制台无严重错误 --- **最后更新**: 2026-03-20 **当前状态**: ✅ 编译成功,待运行验证