You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supabase Auth中error.code返回undefined问题求助

解决Supabase Auth signInWithPassword error.code undefined问题

可能的原因及解决方案:

  • 升级Supabase JS SDK到最新稳定版
    旧版本的Supabase JS SDK存在错误对象code字段未正确填充的问题,优先尝试升级SDK:

    npm update @supabase/supabase-js
    # 或者用yarn
    yarn upgrade @supabase/supabase-js
    

    升级后重新调用signInWithPassword,大部分情况下error.code会正常返回预设的Auth错误码(比如invalid_password、user_not_found等)。

  • 手动从错误详情中提取错误码
    如果升级后仍有问题,可尝试从error.details字段中匹配提取错误码:

    async function signIn(email, password) {
      const { error } = await supabase.auth.signInWithPassword({ email, password });
      if (error) {
        // 尝试从details中提取code
        if (error.details) {
          const codeMatch = error.details.match(/code:\s*(\w+)/);
          const actualCode = codeMatch ? codeMatch[1] : 'unknown_error';
          console.log('提取到的错误码:', actualCode);
        }
        // 其他错误属性正常使用
        console.log('错误状态:', error.status);
        console.log('错误信息:', error.message);
      }
    }
    
  • 结合状态码与消息映射预设错误码
    Supabase Auth的错误码与HTTP状态码、错误消息有对应关系,可手动映射:

    const authErrorMap = {
      400: {
        'Invalid login credentials': 'invalid_credentials',
        'Password should be at least 6 characters': 'password_too_short'
      },
      401: {
        'Invalid token': 'invalid_token'
      }
    };
    
    // 使用示例
    if (error) {
      const mappedCode = authErrorMap[error.status]?.[error.message] || 'unknown_error';
      console.log('映射后的错误码:', mappedCode);
    }
    
  • 检查错误对象的原型链
    少数情况下code可能存在于错误对象的原型链上而非自身属性,可通过以下方式获取:

    if (error) {
      // 拷贝原型属性到自身对象
      const errorWithAllProps = Object.assign({}, error);
      console.log('错误码:', errorWithAllProps.code);
      // 或者直接访问原型属性
      console.log('错误码:', Object.getPrototypeOf(error).code);
    }
    

内容的提问来源于stack exchange,提问作者resource

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:38:18