尝试捕获 Firebase Auth CreateUser 不工作
Try-catch on Firebase Auth CreateUser not working
我在每个 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.'
}
})
});
我想通了!我正在结束这个问题。在 .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;
}
})
只是解释为什么添加 .catch()
对你有用。
您需要捕获 使用.catch()
或catch
块(如果您使用try-catch
块)抛出的错误。 catch 块包含指定在 try 块中抛出异常时要执行的操作的语句。
如果您没有明确捕获异常,那么它将中止 运行 进程并且您的其余代码将不会执行。
我在每个 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.'
}
})
});
我想通了!我正在结束这个问题。在 .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;
}
})
只是解释为什么添加 .catch()
对你有用。
您需要捕获 使用.catch()
或catch
块(如果您使用try-catch
块)抛出的错误。 catch 块包含指定在 try 块中抛出异常时要执行的操作的语句。
如果您没有明确捕获异常,那么它将中止 运行 进程并且您的其余代码将不会执行。