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

Supabase登录报错:auth.signIn is not a function问题求助

解决Supabase登录时auth.signIn is not a function错误

核心原因

你参考的是Supabase JS SDK v1的文档,但实际安装的是v2及以上版本——v2版本已废弃auth.signIn方法,替换为auth.signInWithPassword。

解决方案

  1. 替换登录方法并适配返回值
    将代码中的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);
      }
    };
    
  2. 修复变量名冲突
    你的handleLogin函数参数email、password和顶部的useRef变量重名,会导致内部变量被覆盖,建议改成inputEmail、inputPassword这类区分度高的名称(如上代码所示)。

  3. 降级SDK(可选)
    若坚持使用v1的signIn方法,可降级SDK版本:

    npm install @supabase/supabase-js@1.x.x
    

    但更推荐使用最新版本SDK,避免后续兼容性问题。

补充说明

注册功能正常是因为v2版本中auth.signUp方法未改名,所以你的注册代码不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:52:21