在反应 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/catchthen()/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) { 
    ...