# 注册问题调试指南 ## 🔍 当前问题 修改配置后,注册仍然没有创建用户记录。 ## 📋 检查清单 ### 1. 确认配置已修改并重启服务 ```bash # 检查配置 cd supabase_pro grep ENABLE_EMAIL_AUTOCONFIRM .env # 应该显示: ENABLE_EMAIL_AUTOCONFIRM=true # 重启服务(必须) docker-compose restart auth # 或者 docker-compose restart ``` ### 2. 检查 Supabase 服务是否正常运行 ```bash cd supabase_pro docker-compose ps ``` 确保 `auth` 服务状态为 `Up`。 ### 3. 检查服务日志 ```bash # 查看 auth 服务日志 docker-compose logs auth --tail=50 # 查看是否有错误 docker-compose logs auth | grep -i error ``` ### 4. 验证配置是否生效 在 Supabase Dashboard (http://192.168.1.61:3000) 的 SQL Editor 中执行: ```sql -- 检查当前配置(需要访问 GoTrue 配置) -- 注意:这个查询可能无法直接执行,但可以通过 API 检查 ``` 或者直接测试注册,查看返回结果。 --- ## 🔧 调试步骤 ### 步骤 1:检查前端配置 确认 `ak/config.uts` 中的配置正确: ```typescript export const SUPA_URL: string = 'http://192.168.1.61:8000' export const SUPA_KEY: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' ``` ### 步骤 2:测试注册并查看日志 1. 打开浏览器开发者工具(F12) 2. 切换到 Console 标签 3. 尝试注册新用户 4. 查看控制台输出: - `📝 signUp HTTP 状态码: ...` - `📝 注册返回结果: ...` - `📝 错误代码: ...` - `✅ 找到 user 字段: ...` 或 `⚠️ 未找到 user 信息` ### 步骤 3:检查返回结果 根据控制台日志,判断: **情况 A:HTTP 状态码 200,有 user 字段** - ✅ 注册成功 - 检查 `ak_users` 表是否有记录 - 如果没有,检查 `ensureUserProfile` 是否被调用 **情况 B:HTTP 状态码 500,错误信息包含 "confirmation email"** - ❌ 配置未生效或服务未重启 - 需要重启 Supabase Auth 服务 **情况 C:HTTP 状态码 400,错误信息包含 "already registered"** - ⚠️ 用户已存在 - 尝试登录或使用其他邮箱 --- ## 🐛 常见问题 ### 问题 1:配置已修改但服务未重启 **症状**:仍然返回 500 错误 **解决**: ```bash cd supabase_pro docker-compose restart auth # 等待几秒钟让服务启动 docker-compose ps # 确认服务已启动 ``` ### 问题 2:服务重启失败 **检查**: ```bash docker-compose logs auth ``` **可能原因**: - 配置文件语法错误 - 端口被占用 - Docker 服务未运行 ### 问题 3:注册成功但 ak_users 没有记录 **检查**: 1. 查看控制台是否有 `✅ 用户资料创建成功` 日志 2. 如果没有,检查 `ensureUserProfile` 是否被调用 3. 检查 RLS 策略和触发器是否已创建 --- ## 📝 已改进的代码 1. **`signUp` 方法**: - ✅ 添加 HTTP 状态码检查 - ✅ 添加详细日志 - ✅ 返回错误信息时包含状态码 2. **注册页面**: - ✅ 添加更详细的日志输出 - ✅ 检查所有可能的返回结构 - ✅ 明确错误提示 --- ## 🎯 下一步操作 1. **重启 Supabase Auth 服务**(如果还没重启) 2. **测试注册**,查看控制台日志 3. **根据日志判断问题**: - 如果 HTTP 状态码是 200 且有 user,说明注册成功 - 如果 HTTP 状态码是 500,说明配置未生效,需要重启服务 - 如果 HTTP 状态码是 400,可能是用户已存在或其他错误 4. **检查数据库**: ```sql -- 检查 auth.users SELECT id, email, email_confirmed_at, created_at FROM auth.users ORDER BY created_at DESC LIMIT 5; -- 检查 ak_users SELECT id, email, username, created_at FROM ak_users ORDER BY created_at DESC LIMIT 5; ```