You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase v9 创建用户后auth.currentUser为null 无法调用updateProfile

问题解决方法

核心错误原因

createUserWithEmailAndPassword是异步方法,返回Promise对象,你没有加await关键字等待该方法执行完成,代码就直接向下执行读取projectAuth.currentUser,此时用户注册请求还没处理完,全局的用户状态自然还是null。

优化修正方案

除了补全await,更推荐直接使用createUserWithEmailAndPassword返回结果中的用户对象调用updateProfile,不需要依赖全局的projectAuth.currentUser,可以避免全局状态同步延迟的偶发问题,原本多余导入的getAuth也可以直接移除。

修正后完整代码

import { ref } from "vue"
import { projectAuth } from '../firebase/config'
import { 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 {
        // 补全await等待注册请求完成
        const res = await createUserWithEmailAndPassword(projectAuth, email, password)

        if (!res) {
            throw new Error('Could not complete the signup')
        }
        // 直接用返回结果里的user对象,不依赖全局currentUser
        await updateProfile(res.user, {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 useSignup

内容的提问来源于stack exchange,提问作者Jammooly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:42:03