如何从Firebase函数返回错误?

时间:2018-10-31 14:16:10

标签: javascript reactjs firebase

我有这个功能:

export const createUser = (email, password) => 
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(res => console.log(res))
.catch(error => {
    console.log(error)
    return error
});

我将此函数导入到我的React组件中,如果抛出错误,则将消息设置为其状态:

const process = createUser(email, password)
console.log(process)

但是上面记录了功能的全部详细信息。我试图抓住前端,在将错误放入导出函数的括号中的同时获取process.error,并尝试以某种方式获取消息:process.A.i.L.message,但没有任何效果。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于createUserWithEmailAndPassword是异步的,因此您应该返回Promise而不是从.catch()返回结果。我尚未测试该解决方案,但您应该可以执行以下操作:

// definition
function createUser(email,password) {
    return new Promise((resolve, reject) => {
        firebase.auth().createUserWithEmailAndPassword(email, password)
            .then(res => resolve(res))
            .catch(error => {
                console.log(error)
                reject(error)
            })
        })
}

// when you are calling the function
createUser(email, password)
    .then(process => console.log(process))
    .catch(err => console.log(err))