Попробуйте поймать на Firebase Auth CreateUser не работает

# #javascript #firebase #firebase-authentication #try-catch

Вопрос:

Я вызвал try catch перед каждым оператором if (), а также перед функцией createUserWithEmailAndPassword, и уловка никогда не срабатывает, и ошибка действительно возникает. Также путем копирования кода из документов firebase, и он также не будет работать.

Что я делаю не так? Я хочу поймать код ошибки «авторизация/электронная почта-уже используется» (и любой другой).

Я добавляю код без попытки поймать.

 btnInitialRegister.addEventListener('click', (e) => {
load(strRegisterForm);
hideInitial();
const registerForm = document.querySelector('#registerForm');
const btnRegisterUser = registerForm.querySelector('#userRegisterBtn');
btnRegisterUser.addEventListener('click', e => {
    const registerEmail = registerForm.querySelector('#registerEmail');
    const registerPassword = registerForm.querySelector('#registerPassword');
    const verifyPassword = registerForm.querySelector('#verifyPassword');
    e.preventDefault();
    if (registerPassword.value.length >= 6) {
        if (registerPassword.value == verifyPassword.value) {
                auth.createUserWithEmailAndPassword(registerEmail.value,registerPassword.value)
                .then(userCredential => {
                        authUser = userCredential.user.uid;
                        auth.signOut()
                        console.log('logged out');
                        if (authUser) {
                            setTimeout(function(){registerForm.querySelector('#response').innerHTML  = 'Usuario creado con exito. Estas siendo redirigido.'}, 5000);
                            load(strSignInForm);
                        }
                    }) 
                    
        } else {
            registerForm.querySelector('#response').innerHTML = 'Las contraseñas no coinciden.'
        }
    } else {
        registerForm.querySelector('#response').innerHTML  = 'Las contraseñas deben tener un minimo de 6 caracteres.'
    }
})
 

});

Ответ №1:

Я все понял! Я закрываю вопрос. Добавлено следующее после .затем заявление.

                     .catch(function (error) {
                    var errorCode = error.code;
                    var errorMessage = error.message;
                    if (errorCode == 'auth/email-already-in-use') {
                        document.querySelector('#response').innerHTML = 'El email ya esta siendo utilizado.'
                    } else {
                        document.querySelector('#response').innerHTML = errorMessage;
                    }
                })
 

Ответ №2:

Просто объясните, почему добавление этого .catch() сработало для вас.

Вам нужно отловить ошибки, которые возникают при использовании .catch() блока или catch блока, если вы используете try-catch блок. Блок catch содержит инструкции, указывающие, что делать, если в блоке try возникает исключение.

Если вы явно не поймаете исключение, оно прервет запущенный процесс, и остальная часть вашего кода не будет выполнена.