Firebase Auth v9调用auth()报错Object(...) is not a function求助
问题原因
该报错由Firebase v9与v8版本的API不兼容导致,具体错误点如下:
- 配置文件中导出的
auth是getAuth()返回的Auth实例对象,本身不是可执行函数,不可用auth()的形式调用 - Firebase v9采用模块化函数式API,不再支持v8版本
auth.signInWithEmailAndPassword()这类实例链式调用写法,所有功能都需要单独导入对应的调用函数
修复方案
步骤1:调整signin.js导入逻辑
新增从firebase/auth包导入登录功能函数:
import { auth, database } from "../Firebase/firebase"; // 新增导入邮箱密码登录方法 import { signInWithEmailAndPassword } from "firebase/auth";
步骤2:修改登录调用逻辑
替换原有的链式调用写法,将auth实例作为第一个参数传入登录函数:
const submitForm = async (values) => { signInWithEmailAndPassword(auth, values.email, values.password) .then((userCredentials) => { props.history.push("/profile"); }) .catch((err) => { setLoading(false); }); };
补充说明:后续使用其他Firebase Auth相关能力(比如邮箱注册、退出登录、第三方登录等)都遵循同一规则:先从
firebase/auth导入对应功能函数,再将auth实例作为第一个参数传入执行即可。
内容的提问来源于stack exchange,提问作者Gregory
相关产品推荐
相关产品推荐

