Nora / HOTFIX_NULL_ERROR.md
GitHub Action
Deploy clean version of Nora
59bd45e

🔧 紧急修复: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

  1. 访问:https://huggingface.co/spaces/kernel14/Nora
  2. Settings → Sync from GitHub → Sync now

3. 等待重新构建

  • 查看 Logs 标签页
  • 等待构建完成

✅ 验证修复

访问以下 API 端点,应该都能正常返回:

  1. 健康检查

    https://kernel14-nora.hf.space/health
    
  2. 获取记录

    https://kernel14-nora.hf.space/api/records
    
  3. 获取心情

    https://kernel14-nora.hf.space/api/moods
    
  4. 获取待办

    https://kernel14-nora.hf.space/api/todos
    
  5. 默认角色图片

    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 格式

为什么会出现这个错误?

  1. 复制粘贴错误:可能从 JSON 示例中复制了代码
  2. 语言混淆:在多语言项目中容易混淆语法
  3. IDE 未检测:某些 IDE 可能不会立即标记这个错误

如何避免?

  1. 使用 Linter:配置 pylint 或 flake8
  2. 类型检查:使用 mypy 进行类型检查
  3. 单元测试:编写测试覆盖默认数据生成
  4. 代码审查:提交前仔细检查

🎉 修复完成

修复后,Space 应该能正常运行,所有 API 端点都能正常响应。


修复时间:2026-01-18 影响范围:Hugging Face Space 部署 严重程度:高(导致服务无法启动) 修复状态:✅ 已完成