🔧 紧急修复:Python null 错误
🐛 问题描述
Hugging Face Space 部署后出现错误:
NameError: name 'null' is not defined
🔍 问题原因
在 app/storage.py 中使用了 JavaScript 语法的 null,但 Python 中应该使用 None。
✅ 已修复
1. 修复 storage.py 中的 null
文件:app/storage.py
修改位置:
- 第 173-175 行:
_get_default_records()方法 - 第 315-317 行:
_get_default_todos()方法
修改内容:
# 错误 ❌
"time": null,
"location": null,
# 正确 ✅
"time": None,
"location": None,
2. 修复 Dockerfile
文件:Dockerfile
问题:未复制 generated_images/ 目录,导致默认角色图片 404
修改:
# 添加这行
COPY generated_images/ ./generated_images/
🚀 部署步骤
1. 提交修复
git add app/storage.py Dockerfile
git commit -m "Fix: Replace null with None in Python code"
git push origin main
2. 同步到 Hugging Face
- 访问:https://huggingface.co/spaces/kernel14/Nora
- Settings → Sync from GitHub → Sync now
3. 等待重新构建
- 查看 Logs 标签页
- 等待构建完成
✅ 验证修复
访问以下 API 端点,应该都能正常返回:
健康检查:
https://kernel14-nora.hf.space/health获取记录:
https://kernel14-nora.hf.space/api/records获取心情:
https://kernel14-nora.hf.space/api/moods获取待办:
https://kernel14-nora.hf.space/api/todos默认角色图片:
https://kernel14-nora.hf.space/generated_images/default_character.jpeg
📝 技术说明
Python vs JavaScript 的 null/None
| 语言 | 空值表示 |
|---|---|
| JavaScript | null |
| Python | None |
| JSON | null |
在 Python 代码中:
- ✅ 使用
None - ❌ 不要使用
null
在 JSON 字符串中(如 AI 提示):
- ✅ 使用
"null"(字符串形式) - ✅ 这是正确的,因为是 JSON 格式
为什么会出现这个错误?
- 复制粘贴错误:可能从 JSON 示例中复制了代码
- 语言混淆:在多语言项目中容易混淆语法
- IDE 未检测:某些 IDE 可能不会立即标记这个错误
如何避免?
- 使用 Linter:配置 pylint 或 flake8
- 类型检查:使用 mypy 进行类型检查
- 单元测试:编写测试覆盖默认数据生成
- 代码审查:提交前仔细检查
🎉 修复完成
修复后,Space 应该能正常运行,所有 API 端点都能正常响应。
修复时间:2026-01-18 影响范围:Hugging Face Space 部署 严重程度:高(导致服务无法启动) 修复状态:✅ 已完成