设计师端项目加载-错误日志增强.md 7.0 KB

设计师端项目加载 - 错误日志增强

更新时间:2025年11月2日
状态:✅ 已增强错误日志输出


📸 上次日志分析

✅ 成功的部分

  • Profile ID: m9xAo3sPLu
  • 公司 ID: cDL6R1hgSi
  • ProjectTeam 查询: 找到 2 条记录
    • 项目1: B2xcbHfFR8 - 卓森岸畔
    • 项目2: cycbba1h2 - 澳兰德9.11

❌ 发现的问题

  1. 错误信息不清晰: Error: [object Object] - 看不到真实错误
  2. Parse Server 500 错误: 多个请求返回 Internal Server Error
  3. 项目名称混淆: 显示"虹标资计"而不是"卓森岸畔"
  4. 缺少 deadline: 澳兰德9.11 项目缺少截止日期
  5. 最终结果: 0 个任务成功加载 ❌

🔧 已完成的改进

改进 1: 增强错误日志 ✅

将所有错误处理从:

console.error('❌ 错误:', error);  // 只显示 [object Object]

改为:

console.error('❌ 错误类型:', typeof error);
console.error('❌ 错误对象:', JSON.stringify(error, null, 2));
if (error.message) console.error('❌ 错误消息:', error.message);
if (error.code) console.error('❌ 错误代码:', error.code);
if (error.stack) console.error('❌ 错误堆栈:', error.stack);

改进 2: 详细的处理日志 ✅

每个步骤都有清晰的日志:

  • ✅ 处理项目: 卓森岸畔 (B2xcbHfFR8)
  • 🔍 查询项目 卓森岸畔 的 Product...
  • ✅ 找到 0 个 Product
  • 📝 创建项目级任务: 卓森岸畔

🧪 新的测试步骤

步骤 1: 强制刷新页面

Ctrl+Shift+R (Windows) 或 Cmd+Shift+R (Mac)

步骤 2: 打开控制台(F12)

步骤 3: 查找关键日志

A. 基本信息(应该和之前一样)

✅ Profile ID: m9xAo3sPLu
📋 当前公司 ID: cDL6R1hgSi
✅ ProjectTeam 查询结果: 2 条记录

B. 新的详细处理日志

查找以下内容:

成功处理(期望)✅

✅ 处理项目: 卓森岸畔 (B2xcbHfFR8)
🔍 查询项目 卓森岸畔 的 Product...
✅ 找到 0 个 Product
📝 创建项目级任务: 卓森岸畔

✅ 处理项目: 澳兰德9.11 (cycbba1h2)
⚠️ 项目 澳兰德9.11 缺少 deadline,使用当前时间
🔍 查询项目 澳兰德9.11 的 Product...
✅ 找到 0 个 Product
📝 创建项目级任务: 澳兰德9.11

✅ 成功加载 2 个任务

如果出错(会看到详细错误)❌

✅ 处理项目: 卓森岸畔 (B2xcbHfFR8)
❌ 处理 ProjectTeam 记录时出错
❌ 错误类型: object
❌ 错误对象: {
  "code": 141,
  "message": "Class or object doesn't exist."
}
❌ 错误消息: Class or object doesn't exist.
❌ 错误代码: 141

🔍 预期会看到的错误类型

错误类型 1: Parse 查询错误(Code 141)

{
  "code": 141,
  "message": "Class or object doesn't exist."
}

原因: Product 表或 Project 对象不存在
解决方案: 检查数据库表结构


错误类型 2: Parse 权限错误(Code 119)

{
  "code": 119,
  "message": "Permission denied."
}

原因: 当前用户没有查询 Product 表的权限
解决方案: 调整 Parse 表的 ACL 权限


错误类型 3: Parse Server 500 错误

{
  "code": 500,
  "message": "Internal server error."
}

原因: 后端服务器错误
解决方案: 检查 Parse Server 日志


错误类型 4: 字段缺失错误

❌ 错误消息: Cannot read property 'get' of null

原因: project 或 contact 对象为 null
解决方案: 已添加空值检查


📋 调试清单

刷新页面后,请检查并截图以下内容:

必须有的日志 ✅

  • ✅ Profile ID: m9xAo3sPLu
  • 📋 当前公司 ID: cDL6R1hgSi
  • ✅ ProjectTeam 查询结果: 2 条记录
  • 📋 ProjectTeam 记录详情: (包含 2 个项目)

处理过程日志 📝

  • ✅ 处理项目: 卓森岸畔 (B2xcbHfFR8)
  • 🔍 查询项目 卓森岸畔 的 Product...
  • ✅ 处理项目: 澳兰德9.11 (cycbba1h2)
  • 🔍 查询项目 澳兰德9.11 的 Product...

如果有错误 ❌

请截图完整的错误信息,特别是:

  • ❌ 错误类型:
  • ❌ 错误对象: (JSON 格式)
  • ❌ 错误消息:
  • ❌ 错误代码:

最终结果 🎯

  • ✅ 成功加载 X 个任务 (X 应该 ≥ 0)
  • 页面是否显示项目列表?

🎯 可能的结果

结果 A: 完全成功 ✅✅✅

✅ 成功加载 2 个任务
页面显示:
  1. 卓森岸畔 | 方案阶段 | 2025-11-xx
  2. 澳兰德9.11 | 方案阶段 | 2025-11-xx

结果 B: 部分成功 ✅⚠️

❌ 处理 ProjectTeam 记录时出错 (卓森岸畔)
✅ 成功加载 1 个任务
页面显示:
  1. 澳兰德9.11 | 方案阶段 | 2025-11-xx

结果 C: 全部失败 ❌❌

❌ 处理 ProjectTeam 记录时出错 (卓森岸畔)
❌ 处理 ProjectTeam 记录时出错 (澳兰德9.11)
✅ 成功加载 0 个任务
页面空白

如果是结果 C,我们需要查看详细的错误对象,找出真正的问题所在。


🚨 关键问题分析

上次看到的问题 1: Parse Server 500 错误

GET https://server.fmode.cn/parse/classes/Product?where=...
500 (Internal Server Error)

这可能是:

  • ✅ Product 表不存在
  • ✅ Parse Server 配置问题
  • ✅ 数据库连接问题

如果再次出现:我们可以跳过 Product 查询,直接创建项目级任务。


上次看到的问题 2: 项目名称混淆

❌ 处理项目: 虹标资计 (B2xcbHfFR8)

B2xcbHfFR8 应该是"卓森岸畔"。

可能原因

  • ProjectTeam 记录中的 project 指向了错误的项目
  • 或者同一个设计师被分配到多个项目

新日志会显示:每个 ProjectTeam 记录对应的 project 详情。


🎯 下一步行动

1️⃣ 立即行动

刷新页面(Ctrl+Shift+R),然后:

  1. 打开控制台(F12)
  2. 向上滚动,找到第一个带 🔍 的日志
  3. 截图整个日志序列(从 🔍 开始查询设计师任务✅ 成功加载 X 个任务
  4. 特别关注任何带 ❌ 的错误日志

2️⃣ 如果看到详细错误

根据错误类型,我会:

  • Code 141: 修改查询逻辑,跳过 Product 表
  • Code 119: 调整权限处理
  • Code 500: 添加重试机制或降级方案
  • 其他错误: 针对性修复

3️⃣ 如果成功加载任务 ✅

测试项目列表的显示和交互功能。


📝 总结

本次改进重点

  • ✅ 从 Error: [object Object] 改为详细的 JSON 格式错误信息
  • ✅ 添加错误类型、错误代码、错误消息、错误堆栈
  • ✅ 应用到主查询和降级方案两个路径

预期结果

刷新页面后,即使出错,也能看到清晰、详细、可操作的错误信息,而不是 [object Object]


现在请刷新页面,并提供新的控制台日志截图! 📸

特别关注:

  • ✅ 所有带 ❌ 的错误日志(完整的 JSON 对象)
  • ✅ 成功加载 X 个任务 这一行的 X 值
  • ✅ 页面是否显示了项目列表