【问题标题】:Try-catch on Firebase Auth CreateUser not workingFirebase Auth CreateUser 上的 Try-catch 不起作用
【发布时间】:2021-10-06 04:04:13
【问题描述】:

我在每个 if() 语句之前以及在 createUserWithEmailAndPassword 函数之前调用了一个 try catch,并且 catch 永远不会起作用,并且确实会发生错误。也可以通过从firebase docs 复制代码,它也不起作用。

我做错了什么?我想捕获“auth/email-already-in-use”错误代码(和任何其他)。

我添加了没有 try-catch 的代码。

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.'
    }
})

});

【问题讨论】:

    标签: javascript firebase firebase-authentication try-catch


    【解决方案1】:

    只是解释为什么添加 .catch() 对你有用。

    您需要捕获使用.catch()catch 块(如果您正在使用try-catch 块)引发的错误。 catch-block 包含的语句指定在 try-block 中抛出异常时要执行的操作。

    如果您没有显式捕获异常,那么它将中止正在运行的进程,并且您的其余代码将不会执行。

    【讨论】:

      【解决方案2】:

      我想通了!我正在结束这个问题。在 .then 语句后添加以下内容。

                          .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;
                          }
                      })
      

      【讨论】:

        猜你喜欢
        • 2021-06-06
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        • 1970-01-01
        • 2014-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多