File size: 2,852 Bytes
59bd45e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | # 🔧 紧急修复: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()` 方法
**修改内容**:
```python
# 错误 ❌
"time": null,
"location": null,
# 正确 ✅
"time": None,
"location": None,
```
### 2. 修复 Dockerfile
**文件**:`Dockerfile`
**问题**:未复制 `generated_images/` 目录,导致默认角色图片 404
**修改**:
```dockerfile
# 添加这行
COPY generated_images/ ./generated_images/
```
## 🚀 部署步骤
### 1. 提交修复
```bash
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 部署
**严重程度**:高(导致服务无法启动)
**修复状态**:✅ 已完成
|