Supabase登录报错:auth.signIn is not a function问题求助
解决Supabase登录时
auth.signIn is not a function错误 核心原因
你参考的是Supabase JS SDK v1的文档,但实际安装的是v2及以上版本——v2版本已废弃auth.signIn方法,替换为auth.signInWithPassword。
解决方案
替换登录方法并适配返回值
将代码中的supabase.auth.signIn改为supabase.auth.signInWithPassword,同时注意v2的返回值结构变化(需从data中解构user):const email = useRef(); const password = useRef(); const handleLogin = async (inputEmail, inputPassword) => { try { const { data, error } = await supabase.auth.signInWithPassword({ email: inputEmail, password: inputPassword, }) if (error) { if (error.message === 'Email not confirmed') { setError('请先检查邮箱完成地址验证后再登录。'); } else { console.error('登录错误:', error.message); } } else { console.log('用户登录成功:', data.user); onLogin(); // 调用传入的登录回调 } } catch (error) { console.error('错误:', error.message); } };修复变量名冲突
你的handleLogin函数参数email、password和顶部的useRef变量重名,会导致内部变量被覆盖,建议改成inputEmail、inputPassword这类区分度高的名称(如上代码所示)。降级SDK(可选)
若坚持使用v1的signIn方法,可降级SDK版本:npm install @supabase/supabase-js@1.x.x但更推荐使用最新版本SDK,避免后续兼容性问题。
补充说明
注册功能正常是因为v2版本中auth.signUp方法未改名,所以你的注册代码不受影响。
内容的提问来源于stack exchange,提问作者Your Friend
相关产品推荐
相关产品推荐

