Aquí está mi código JS:
import { ref } from "vue" import { projectAuth } from '../firebase/config' import { getAuth, createUserWithEmailAndPassword, updateProfile } from 'firebase/auth' const error = ref(null) const isPending = ref(false) const signup = async(email, password, displayName) => { error.value = null isPending.value = true try { const res = createUserWithEmailAndPassword(projectAuth, email, password) console.log(projectAuth.currentUser) if (!res) { console.log('Could not complete the signup') throw new Error('Could not complete the signup') } console.log(projectAuth.currentUser) await updateProfile(projectAuth.currentUser, {displayName}) error.value = null isPending.value = false return res } catch(err) { console.log('ERROR: ' + err.message) error.value = err.message isPending.value = false } } const useSignup = () => { return {error, signup, isPending} } export default useSignupMi aplicación Vue3 está llamando a la función de registro en este script cada vez que un usuario se registra. La función createUserWithEmailAndPassword es exitosa y el usuario aparece en firebase. Pero también quiero agregar un nombre para mostrar a mi usuario, así que estoy tratando de usar la función updateProfile para hacerlo, pero hay un problema.
El problema es que projectAuth.currentUser es nulo incluso después de crear el usuario y no puedo entender por qué.
El método createUserWithEmailAndPassword() devuelve una promesa. Dado que su función es async , intente agregar await :
const res = await createUserWithEmailAndPassword(projectAuth, email, password) console.log(projectAuth.currentUser) Alternativamente, puede pasar el objeto User a updateProfile directamente desde res:
const { user } = await createUserWithEmailAndPassword(projectAuth, email, password) await updateProfile(user, { displayName })