weight-page-troubleshooting.md 6.1 KB

体重管理页面问题诊断与修复报告

问题描述

访问 http://localhost:4200/weight 时自动跳转到登录页面。

根本原因分析

经过深入分析,发现以下问题:

1. ✅ ECharts CDN冲突(已修复)

问题:在 index.html 中通过CDN引入了ECharts,同时npm也安装了echarts包,导致模块加载冲突。

修复

  • 移除了 index.html 中的CDN引入
  • app.config.ts 中正确配置ngx-echarts使用npm安装的echarts

    // app.config.ts
    importProvidersFrom(
    NgxEchartsModule.forRoot({
    echarts: () => import('echarts')
    })
    )
    

2. ✅ NgxEchartsModule配置缺失(已修复)

问题:NgxEchartsModule没有正确注册到应用配置中。

修复:在 app.config.ts 中添加了正确的provider配置。

3. 可能的原因:组件加载错误

如果页面仍然跳转到登录页,可能是因为:

A. 开发服务器未重启

Angular开发服务器需要重启才能加载新的配置更改。

解决方案

# 停止当前服务器 (Ctrl+C)
# 重新启动
cd campus_health_app/frontend/campus-health-app
npm start

B. 浏览器缓存问题

旧的JavaScript可能仍在缓存中。

解决方案

  1. 打开浏览器开发者工具 (F12)
  2. 右键点击刷新按钮
  3. 选择"清空缓存并硬性重新加载"

或者:

  • Chrome: Ctrl+Shift+Delete 清除缓存
  • 勾选"缓存的图片和文件"
  • 时间范围选择"全部时间"
  • 点击"清除数据"

C. 路由懒加载错误

如果weight模块加载失败,Angular会触发通配符路由重定向到login。

调试方法

  1. 打开浏览器控制台 (F12)
  2. 访问 http://localhost:4200/weight
  3. 查看是否有错误信息,特别是:
    • Module loading errors
    • Component initialization errors
    • ECharts loading errors

预期的控制台输出

✅ WeightComponent initialized
📊 Starting data subscriptions
📝 Received weight records: 0

D. TypeScript编译错误

如果组件有编译错误,会导致模块无法加载。

检查方法

cd campus_health_app/frontend/campus-health-app
npm run build

查看是否有ERROR输出。

修复步骤清单

步骤1:重启开发服务器 ⭐

# 在运行npm start的终端按 Ctrl+C 停止
# 然后重新启动
cd campus_health_app/frontend/campus-health-app
npm start

步骤2:清除浏览器缓存

  1. 按 F12 打开开发者工具
  2. 在Network面板勾选"Disable cache"
  3. 刷新页面 (Ctrl+Shift+R)

步骤3:验证路由加载

访问测试页面:

file:///D:/workspace/Agi/zrd-nb666/campus_health_app/frontend/campus-health-app/test-routes.html

点击"体重管理"链接,观察:

  • 是否跳转到weight页面
  • 控制台是否有错误
  • Network面板中模块是否成功加载

步骤4:使用一键生成测试数据

成功进入weight页面后:

  1. 向下滚动到页面底部
  2. 点击"一键生成90天模拟数据"按钮
  3. 页面会重新加载并显示完整的图表

验证清单

  • 开发服务器已重启
  • 浏览器缓存已清除
  • 访问 http://localhost:4200/weight 不跳转
  • 控制台显示 "✅ WeightComponent initialized"
  • 页面显示统计卡片和图表
  • 点击"录入体重"按钮显示对话框
  • 点击"一键生成90天模拟数据"能生成数据

额外调试技巧

查看路由日志

在浏览器控制台输入:

// 查看当前路由状态
console.log(window.location);

// 查看localStorage中的数据
console.log(localStorage.getItem('weight_data'));

手动导航测试

在控制台输入:

// 假设你在其他页面,尝试编程式导航
window.location.href = '/weight';

检查模块加载

在Network面板中筛选:

  • 类型选择"JS"
  • 查找"weight"相关的chunk文件
  • 查看是否有404或加载失败

预期结果

成功修复后,访问 http://localhost:4200/weight 应该看到:

  1. 顶部导航栏

    • ← 返回按钮
    • 体重管理标题
    • + 录入体重 按钮
    • 目标设置 按钮
  2. 统计卡片(3个)

    • 当前体重
    • 体重变化
    • 平均周变化
  3. 主图表区域

    • 左侧:体重趋势折线图(空白或有数据)
    • 右侧:目标进度环形图(如果设置了目标)
  4. 筛选栏

    • 7天/30天/90天/全部/自定义按钮
    • 测量条件下拉框
  5. 其他图表

    • 周/月体重变化柱状图
    • 体重vs体脂率散点图
  6. 底部

    • 一键生成90天模拟数据按钮

常见错误及解决方案

错误1:Cannot read properties of undefined

原因:数据服务初始化失败 解决:确保WeightDataService正确注入

错误2:ECharts is not defined

原因:ECharts模块加载失败 解决

  1. 确认npm install成功安装echarts
  2. 确认app.config.ts中NgxEchartsModule配置正确
  3. 重启开发服务器

错误3:Router navigation failed

原因:路由配置错误 解决:检查weight.routes.ts导出是否正确

错误4:页面空白但无错误

原因:CSS未加载或样式文件过大 解决

  1. 检查weight.component.scss是否存在
  2. 检查构建警告(文件大小超出预算)
  3. 优化样式文件大小

技术支持

如果问题仍然存在,请提供以下信息:

  1. 浏览器控制台完整错误信息
  2. Network面板中失败的请求
  3. npm start的完整输出
  4. npm run build的输出

文件清单

已修改的文件:

  • src/index.html - 移除ECharts CDN
  • src/app/app.config.ts - 添加NgxEchartsModule配置
  • src/app/modules/weight/weight.component.ts - 添加调试日志
  • src/app/modules/weight/weight.component.html - 完整模板
  • src/app/modules/weight/weight.component.scss - 响应式样式
  • src/app/modules/weight/models/weight.models.ts - 数据模型
  • src/app/services/weight-data.service.ts - 数据服务

更新日志

2025-10-20

  • 修复ECharts CDN冲突
  • 正确配置NgxEchartsModule
  • 添加调试日志
  • 创建故障排除文档