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
相关产品推荐
相关产品推荐

