常见错误
登录码无效或已过期
现象: 玩家 /login 报错
原因:
- Admin 未发布码或已关闭
- 输入错误
- Backend 不可达(verify-code fetch 失败)
解决:
redis-cli GET game:main_room:login_code
# 应有 6 位数字
Admin 重新 发布登录码。
Staff 邮箱或密码错误
现象: /staff-login 红色提示
原因:
- 邮箱不在
ADMIN_EMAILS/DISPLAY_EMAILS STAFF_ADMIN_PASSWORD/STAFF_DISPLAY_PASSWORD未配置或错误- Admin 邮箱用了 Display 密码(反之亦然)
大屏不显示登录码
现象: Show 显示「等待管理员发布登录码」
原因:
- Admin 未 publish
- Display Socket 未连接
- 收不到
login_code_published
解决: 刷新 Show;检查 Display Staff 登录与 accessToken。
游戏已开始,请等待下一轮
现象: 玩家 Socket redirect 后断线
原因: gameStarted=1 且该 UUID 不在 survivors/eliminated/winner/tie
解决: 等 Admin 重置游戏 → 重新发布登录码。
JWT / Socket 认证失败
原因: JWT_SECRET 前后端不一致;token 过期
解决: 统一 secret;重新登录。
发布题目 400
原因: 当前 playing 或 ended 未 reset
解决: 等轮次结束或 reset。
verify-code 500
原因: Redis 不可用
解决: redis-cli ping;检查 REDIS_URL。
Mario 主题样式错乱
原因: NEXT_PUBLIC_THEME=mario 未 rebuild
解决: 改 env 后 npm run build 重启。
PostgreSQL snapshot 失败
现象: 日志 Failed to upsert latest snapshot
说明: 不阻塞游戏;但 Redis 崩溃后可能无法恢复。检查 DATABASE_URL 与 migration。