React前端对接Flask后端出现404/500错误 同仓库其他设备运行正常
问题根源定位
你的报错本质是pandas读取到的数据集存在空值(NaN),队友运行正常你报错的核心诱因大概率是Windows系统环境和类Unix系统的差异,以及Python环境调用异常:
核心原因
- Python环境未正确隔离:你交替使用Anaconda Prompt和PowerShell,启动后端时可能未激活项目对应的虚拟环境,实际调用的是全局Python,即使版本号匹配,也可能存在依赖读取、环境变量的隐性差异
- 数据编码/拉取异常:Windows系统默认文件编码为GBK,若项目数据文件为UTF-8编码,pandas读取时会出现乱码、空值;如果
pull_bsu_data()是拉取在线表格数据,Windows防火墙/网络代理可能拦截了数据请求,导致拉取到不完整的空数据
解决方案
- 第一步:启动后端前先确认环境一致性
进入back-end目录,先激活项目虚拟环境,执行pip list和官方依赖清单逐一比对,确认所有依赖版本完全匹配后再执行flask run命令,不要直接使用全局Python启动服务 - 第二步:排查空值来源
在pull_bsu_data()执行完成后添加调试代码:
print(bsumain.isnull().sum())
如果Date、Total_Cases列存在空值:
- 读取本地文件的场景:给pandas读取方法指定编码参数,比如
pd.read_csv("数据文件名", encoding="utf-8") - 拉取在线数据的场景:检查本地网络是否能正常访问数据源,临时关闭Windows防火墙测试是否是拦截导致的数据不全
- 第三步:临时兼容(可选)
可以修改代码适配异常值,避免直接抛出服务错误:- 修复日期拼接错误:将
rstring+='{"date": "'+bsudate[i]+'",'修改为rstring+='{"date": "'+str(bsudate[i])+'",' - 修复NaN转int错误:将
total_cases = int(bsumain['Total_Cases'].iloc[0])修改为total_cases = int(pd.notna(bsumain['Total_Cases'].iloc[0]) and bsumain['Total_Cases'].iloc[0] or 0)
- 修复日期拼接错误:将
内容的提问来源于stack exchange,提问作者MJohn27
相关产品推荐
相关产品推荐

