Files
medical-mall/pages/user/test/DEBUG_SIGNUP.md

3.7 KiB
Raw Blame History

注册问题调试指南

🔍 当前问题

修改配置后,注册仍然没有创建用户记录。

📋 检查清单

1. 确认配置已修改并重启服务

# 检查配置
cd supabase_pro
grep ENABLE_EMAIL_AUTOCONFIRM .env
# 应该显示: ENABLE_EMAIL_AUTOCONFIRM=true

# 重启服务(必须)
docker-compose restart auth
# 或者
docker-compose restart

2. 检查 Supabase 服务是否正常运行

cd supabase_pro
docker-compose ps

确保 auth 服务状态为 Up

3. 检查服务日志

# 查看 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 中执行:

-- 检查当前配置(需要访问 GoTrue 配置)
-- 注意:这个查询可能无法直接执行,但可以通过 API 检查

或者直接测试注册,查看返回结果。


🔧 调试步骤

步骤 1检查前端配置

确认 ak/config.uts 中的配置正确:

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检查返回结果

根据控制台日志,判断:

情况 AHTTP 状态码 200有 user 字段

  • 注册成功
  • 检查 ak_users 表是否有记录
  • 如果没有,检查 ensureUserProfile 是否被调用

情况 BHTTP 状态码 500错误信息包含 "confirmation email"

  • 配置未生效或服务未重启
  • 需要重启 Supabase Auth 服务

情况 CHTTP 状态码 400错误信息包含 "already registered"

  • ⚠️ 用户已存在
  • 尝试登录或使用其他邮箱

🐛 常见问题

问题 1配置已修改但服务未重启

症状:仍然返回 500 错误

解决

cd supabase_pro
docker-compose restart auth
# 等待几秒钟让服务启动
docker-compose ps  # 确认服务已启动

问题 2服务重启失败

检查

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. 检查数据库

    -- 检查 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;