React Native Firebase注册报错:undefined is not an object (evaluating 'auth.tenantId')
解决React Native Firebase注册时
undefined is not an object (evaluating 'auth.tenantId')错误 这个错误的核心原因是你没有正确初始化并获取Firebase Auth实例,代码中直接从firebase/app导入的auth是未定义的,导致调用createUserWithEmailAndPassword时尝试访问auth.tenantId抛出异常。
修复步骤:
创建/完善Firebase初始化文件
在项目中新建(或修改)Firebase配置文件(比如firebaseConfig.js),确保正确初始化App并导出Auth实例:import { initializeApp } from "firebase/app"; import { getAuth } from "firebase/auth"; // 替换为你自己的Firebase项目配置(从Firebase控制台复制) const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_MESSAGING_SENDER_ID", appId: "YOUR_APP_ID" }; const app = initializeApp(firebaseConfig); // 初始化并导出Auth实例 export const auth = getAuth(app);修正注册页面的Auth导入
将注册页面中错误的导入语句:import { auth } from "firebase/app";替换为从你的Firebase初始化文件导入:
import { auth } from "../firebaseConfig"; // 路径根据你的文件位置调整优化邮箱验证调用(可选但更可靠)
注册成功后,直接使用userCredential.user而非auth.currentUser来发送验证邮件,避免异步场景下currentUser未及时更新的问题:createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // 替换auth.currentUser为userCredential.user sendEmailVerification(userCredential.user); navigation.navigate("ToDo", { user: userCredential.user }); }) .catch((error) => { setValidationMessage(error.message); });
完成以上修改后,重新运行项目,点击注册按钮即可正常创建用户账号。
内容的提问来源于stack exchange,提问作者Rubain Riyam
相关产品推荐
相关产品推荐

