在反应 firebase 中使用 UpdateProfile 时未捕获的承诺
Uncaught Promises when using UpdateProfile in react firebase
我翻了很多帖还是没能解决这个问题。当我尝试更新用户的个人资料时,我得到了未兑现的承诺。
以下是我目前的功能。请帮忙谢谢!
const createUser = async () => {
await addDoc(database.usersRef, {
email: emailRef.current.value,
fullName: nameRef.current.value,
mobileNumber: mobileRef.current.value,
status: "Active",
userType: userTypeRef.current.value
});
};
async function handleSubmit(e) {
e.preventDefault()
counter++;
const password = "Password1!"
const secondaryApp = firebase.initializeApp({
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN
}, '' + counter)
const newAuth = getAuth(secondaryApp);
try {
setError('');
setLoading(true);
const newUser = await createUserWithEmailAndPassword(newAuth, emailRef.current.value, password)
updateProfile(newAuth.currentUser, {
displayName: nameRef.current.value,
phoneNumber: mobileRef.current.value
}).catch((error) => {
console.log(error);
})
await sendEmailVerification(newUser.user);
newAuth.signOut();
createUser();
setShowModal(true);
} catch (e) {
console.log(e)
setError('Failed to create an account')
}
setLoading(false)
}
最好不要将 async
/await
/catch
与 then()
/catch()
混合使用,而是使用其中之一。
由于您正在使用 try
/catch
,因此在对 updateProfile
的调用中也使用 await
,这样任何错误都将转换为异常
try {
setError('');
setLoading(true);
const newUser = await createUserWithEmailAndPassword(newAuth, emailRef.current.value, password)
//
await updateProfile(newAuth.currentUser, {
displayName: nameRef.current.value,
phoneNumber: mobileRef.current.value
})
await sendEmailVerification(newUser.user);
newAuth.signOut();
createUser();
setShowModal(true);
} catch (e) {
...
我翻了很多帖还是没能解决这个问题。当我尝试更新用户的个人资料时,我得到了未兑现的承诺。
以下是我目前的功能。请帮忙谢谢!
const createUser = async () => {
await addDoc(database.usersRef, {
email: emailRef.current.value,
fullName: nameRef.current.value,
mobileNumber: mobileRef.current.value,
status: "Active",
userType: userTypeRef.current.value
});
};
async function handleSubmit(e) {
e.preventDefault()
counter++;
const password = "Password1!"
const secondaryApp = firebase.initializeApp({
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN
}, '' + counter)
const newAuth = getAuth(secondaryApp);
try {
setError('');
setLoading(true);
const newUser = await createUserWithEmailAndPassword(newAuth, emailRef.current.value, password)
updateProfile(newAuth.currentUser, {
displayName: nameRef.current.value,
phoneNumber: mobileRef.current.value
}).catch((error) => {
console.log(error);
})
await sendEmailVerification(newUser.user);
newAuth.signOut();
createUser();
setShowModal(true);
} catch (e) {
console.log(e)
setError('Failed to create an account')
}
setLoading(false)
}
最好不要将 async
/await
/catch
与 then()
/catch()
混合使用,而是使用其中之一。
由于您正在使用 try
/catch
,因此在对 updateProfile
的调用中也使用 await
,这样任何错误都将转换为异常
try {
setError('');
setLoading(true);
const newUser = await createUserWithEmailAndPassword(newAuth, emailRef.current.value, password)
//
await updateProfile(newAuth.currentUser, {
displayName: nameRef.current.value,
phoneNumber: mobileRef.current.value
})
await sendEmailVerification(newUser.user);
newAuth.signOut();
createUser();
setShowModal(true);
} catch (e) {
...