Files
workdizhi/导入问题排查指南.md

202 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 导入数据问题排查指南
## 🔍 问题现象
导入数据后,在另一台电脑只能看到一条测试网址,说明导入的数据没有正确保存到服务器。
## 🔧 已实施的修复
### 1. 增强错误处理
- 添加了详细的控制台日志
- 保存失败时会显示具体错误信息
- 导入成功后会显示导入的数据数量
### 2. 添加数据验证
- 导入后会自动验证服务器上的数据
- 显示导入的网址和分类数量
- 保存失败时会抛出错误
### 3. 增强服务器日志
- 服务器会记录每次保存请求的详细信息
- 记录保存的网址和分类数量
- 保存后会验证文件内容
## 📋 排查步骤
### 步骤 1: 检查浏览器控制台
1. 打开网站http://101.43.95.130:3006
2. 按 F12 打开开发者工具
3. 切换到 Console 标签
4. 执行导入操作
5. 查看控制台输出,应该看到:
- `导入数据: {...}`
- `导入网址数量: X`
- `开始保存数据到服务器...`
- `服务器保存成功: {...}`
- `服务器上的数据: {...}`
### 步骤 2: 检查网络请求
1. 在开发者工具中切换到 Network 标签
2. 执行导入操作
3. 查找 POST 请求到 `/api/urls`
4. 检查:
- 请求状态码(应该是 200
- 请求体(应该包含所有导入的数据)
- 响应内容(应该显示成功)
### 步骤 3: 检查服务器日志
```bash
# 查看容器日志
docker logs -f workdizhi-web
# 执行导入操作,应该看到:
# - "收到保存请求: { urlsCount: X, categoriesCount: Y }"
# - "数据已保存,验证: { urlsCount: X, categoriesCount: Y }"
```
### 步骤 4: 检查数据文件
```bash
# 检查服务器上的数据文件
cat /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json
# 检查容器内的数据文件
docker exec workdizhi-web cat /app/data/urls.json
# 通过 API 获取数据
curl http://localhost:3006/api/urls
```
## 🐛 常见问题
### 问题 1: 导入的数据格式不正确
**症状**: 控制台显示 "文件格式错误"
**解决**:
- 确保 JSON 文件格式正确
- 文件应包含 `urls``categories` 字段
- 示例格式:
```json
{
"urls": [
{"id": "1", "title": "网址1", "url": "https://example.com"}
],
"categories": []
}
```
### 问题 2: 保存请求失败
**症状**: 控制台显示 "保存到服务器失败"
**检查**:
1. 网络连接是否正常
2. 服务器是否运行:`docker ps | grep workdizhi`
3. API 是否可访问:`curl http://localhost:3006/api/health`
**解决**:
```bash
# 重启服务
cd /home/renjianbo/devops/workdizhi/workdizhi
docker-compose restart
```
### 问题 3: 数据保存但读取时为空
**症状**: 保存成功,但读取时只有默认数据
**检查**:
1. 数据文件是否存在
2. 文件内容是否正确
3. 文件权限是否正确
**解决**:
```bash
# 检查文件
cat /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json
# 修复权限(如果需要)
sudo chown -R renjianbo:renjianbo /home/renjianbo/devops/workdizhi/workdizhi/data/
```
### 问题 4: 导入后数据被覆盖
**症状**: 导入成功,但之后添加的数据覆盖了导入的数据
**原因**: 可能是 localStorage 中的旧数据覆盖了服务器数据
**解决**:
1. 清除浏览器 localStorage
2. 重新加载页面
3. 数据会从服务器重新加载
## 🔍 调试命令
### 查看当前数据
```bash
# 服务器文件
cat /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json
# API 获取
curl http://localhost:3006/api/urls | python -m json.tool
# 容器内文件
docker exec workdizhi-web cat /app/data/urls.json
```
### 测试保存功能
```bash
# 测试保存
curl -X POST http://localhost:3006/api/urls \
-H "Content-Type: application/json" \
-d '{
"urls": [
{"id": "1", "title": "测试1", "url": "https://test1.com"},
{"id": "2", "title": "测试2", "url": "https://test2.com"}
],
"categories": []
}'
# 验证保存
curl http://localhost:3006/api/urls
```
### 查看日志
```bash
# 实时查看日志
docker logs -f workdizhi-web
# 查看最近 50 行
docker logs --tail 50 workdizhi-web
```
## ✅ 验证导入成功
导入数据后,执行以下验证:
1. **浏览器控制台**: 应该看到 "数据导入成功!已导入 X 个网址..."
2. **服务器文件**: `cat /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json` 应该包含所有导入的数据
3. **API 获取**: `curl http://localhost:3006/api/urls` 应该返回所有数据
4. **重启测试**: 重启容器后,数据应该还在
## 🎯 下一步
如果问题仍然存在,请:
1. 打开浏览器开发者工具F12
2. 切换到 Console 标签
3. 执行导入操作
4. 复制所有控制台输出
5. 检查 Network 标签中的 POST 请求
6. 查看请求和响应的详细信息
这些信息可以帮助进一步诊断问题。