i am making a authentication app in react native with firebase and i get this error in the sign up process called undefined is not an object (evaluating 'auth.tenantId') i cant figure this out i am using react native can any of you please help me fix this error
this is my error screenshot https://i.stack.imgur.com/mupat.png
this is my code
import { Text, View, TextInput, ImageBackground, Button, KeyboardAvoidingView, Platform } from 'react-native';
import AppStyles from '../styles/AppStyles';
import InlineTextButton from '../Components/InlineTextButton';
import React from 'react';
import { auth } from "firebase/app";
import { createUserWithEmailAndPassword, sendEmailVerification } from "firebase/auth";
export default function SignUp({ navigation }) {
const background = require("../assets/background.jpg");
let [email, setEmail] = React.useState("");
let [password, setPassword] = React.useState("");
let [confirmPassword, setConfirmPassword] = React.useState("");
let [validationMessage, setValidationMessage] = React.useState("");
let validateAndSet = (value, valueToCompare, setValue) => {
if (value !== valueToCompare) {
setValidationMessage("Passwords do not match.");
} else {
setValidationMessage("");
}
setValue(value);
};
let signUp = () => {
if (password === confirmPassword) {
createUserWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
sendEmailVerification(auth.currentUser);
navigation.navigate("ToDo", { user: userCredential.user });
})
.catch((error) => {
setValidationMessage(error.message);
});
}
}
return (
<ImageBackground style={AppStyles.imageContainer} source={background}>
<KeyboardAvoidingView
style={AppStyles.backgroundCover}
behavior={Platform.OS === "ios" ? "padding" : null}
keyboardVerticalOffset={60}>
<Text style={[AppStyles.lightText, AppStyles.header]}>Sign Up</Text>
<Text style={[AppStyles.errorText]}>{validationMessage}</Text>
<TextInput
style={[AppStyles.textInput, AppStyles.lightTextInput, AppStyles.lightText]}
placeholder='Email'
placeholderTextColor="#BEBEBE"
value={email}
onChangeText={setEmail} />
<TextInput
style={[AppStyles.textInput, AppStyles.lightTextInput, AppStyles.lightText]}
placeholder='Password'
placeholderTextColor="#BEBEBE"
secureTextEntry={true}
value={password}
onChangeText={(value) => validateAndSet(value, confirmPassword, setPassword)} />
<TextInput
style={[AppStyles.textInput, AppStyles.lightTextInput, AppStyles.lightText]}
placeholder='Confirm Password'
placeholderTextColor="#BEBEBE"
secureTextEntry={true}
value={confirmPassword}
onChangeText={(value) => validateAndSet(value, password, setConfirmPassword)} />
<View style={[AppStyles.rowContainer, AppStyles.topMargin]}>
<Text style={AppStyles.lightText}>Already have an account? </Text>
<InlineTextButton text="Login" onPress={() => navigation.popToTop()} />
</View>
<Button title="Sign Up" onPress={signUp} color="#f7b267" />
</KeyboardAvoidingView>
</ImageBackground>
);
}
i dont know why this is hapening i am expecting after this error is solved when i click the sign up button it would crete the user account
CodePudding user response:
Are you using firebase 9?
You should do it like this:
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth";
const auth = getAuth();
createUserWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
// Signed in
const user = userCredential.user;
// ...
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
// ..
});
You must send auth as a param but don't import it, instead of that use const auth = getAuth()
as you see in the example