Files
Meshray-Manager/docs/前端嵌入验证清单.md
T
2026-06-30 15:14:37 +08:00

216 lines
3.6 KiB
Markdown

# 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
**当前状态**: ✅ 编译成功,待运行验证