react-native中的firebase错误“ c.call不是函数”

时间:2019-08-05 10:29:25

标签: javascript firebase react-native

我正在尝试在我的react-native项目中使用firebase进行用户登录/注销过程。当我单击该按钮时,将执行firebase.auth()。SignInWithEmailAndPassword函数,但会给出错误消息,提示“ c.call不是函数”,这是在auth.js中发生的。

我找不到与该错误有关的任何答案。

[错误的屏幕截图](https://ibb.co/TPQCFZr

onButtonClick() {
        const { email, password } = this.state;

        this.setState({ error: '', loading: true });

        firebase.auth().signInWithEmailAndPassword(email, password)
        .then(this.onLoginSuccess.bind(this))
        .catch(
            firebase.auth().createUserWithEmailAndPassword(email, password)
            .then(this.onCreateSuccess.bind(this))
            .catch(this.onLoginFail.bind(this))
        );
    }

2 个答案:

答案 0 :(得分:0)

我不知道本机响应,但是问题可能出在您没有将回调函数传递给then()方法的事实。

尝试以下操作:

onButtonClick() {
        const { email, password } = this.state;

        this.setState({ error: '', loading: true });

        firebase.auth().signInWithEmailAndPassword(email, password)
        .then(userCredential => this.onLoginSuccess.bind(this))
        .catch(err => {
            //err
        });
    }

请参阅then()方法here的文档,该文档说明:

  

then()方法返回一个Promise。它最多需要两个参数:   回调函数,用于Promise的成功和失败案例。

,并且失败案例的回调函数是可选的。


实际上,您正在使用catch()方法执行相同的操作。参见文档here


最后,请注意,您不应以相同的方式处理signInWithEmailAndPassword()方法中的所有错误。发生此错误的情况有不同的情况:密码错误,找不到用户等。请参见https://firebase.google.com/docs/reference/js/firebase.auth.Auth.html#signinwithemailandpassword

答案 1 :(得分:0)

您应该使用async / await和 还可以使用try ... catch构造处理所有可抛物。
示例代码:

{Binding MyClass?.Accepted, ...