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