开发者问题收集

未捕获的类型错误:(0,_firebase.auth)不是一个函数

2018-02-04
5933

尝试在 React 应用中使用 Firebase 身份验证。 我按照 firbase 文档中的说明进行操作。

使用 npm 安装了 firebase

添加了 firebase.js 文件:

import * as firebase from 'firebase'

var config = {
  apiKey: "AIzaSyBUORmX2qG7BXFC4hqfKAq0Y6HMAsLTGbw",
  authDomain: "hardy-brooklyn.firebaseapp.com",
  databaseURL: "https://hardy-brooklyn.firebaseio.com",
  projectId: "hardy-brooklyn",
  storageBucket: "hardy-brooklyn.appspot.com",
  messagingSenderId: "392580429077"
};
firebase.initializeApp(config);

const auth = firebase.auth();

export {
  auth,
};

调用了我的组件中的一个身份验证函数:

"use strict";
import React, { Component } from "react";
import { auth } from "../../firebase"

export default class Nav extends Component {
  constructor(props) {
    super(props);
    this.state = {
      nav: "hideNav",
      login: "hideLogin",
      email: "",
      password: ""
    };
    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);

  }

  handleChange(event) {
    this.setState({email: event.target.value});
  }

  handleSubmit(event) {
    event.preventDefault();
    let email = this.state.email;
    let password = this.state.password;
    auth().signInWithEmailAndPassword(email, password).catch(function(error) {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
    });
    auth().onAuthStateChanged(function(user) {
      if (user) {
        // User is signed in.
        var displayName = user.displayName;
        var email = user.email;
        var emailVerified = user.emailVerified;
        var photoURL = user.photoURL;
        var isAnonymous = user.isAnonymous;
        var uid = user.uid;
        var providerData = user.providerData;
        console.log(displayName)
      } else {
        console.log('no user')
      }
    });


  }

  render() {
    return (
      <div>
        <form id="login" style={loginStyles[this.state.login]} onSubmit={this.handleSubmit}>
          ADMIN USE ONLY
          <br/>
          Email:
          <input type="email" name="email" onChange={this.handleChange}/>
          <br/>
          Password:
          <input type="password" name="password"/>
          <br/>
          <button >submit</button>
          <button onClick={this.hideLogin}>hide</button>
        </form>
      </div>
    );
  }
}

我一直收到错误:Uncaught TypeError:(0, _firebase.auth) 不是函数

我在 Google 上搜索过这个错误,但没有找到任何结果。

我做错了什么?谢谢!

2个回答

在 firebase.js 中,您已经调用了 firebase.auth() 并导出了对象。您不应再次调用导入的 auth 对象,只需访问导入的 auth 对象并对其调用下一个函数即可。

例如
尝试 auth.signInWithEmailAndPassword 而不是 auth().signInWithEmailAndPassword

ztadic91
2018-02-04

对于 react-native,像这样导入 auth:

import auth from "@react-native-firebase/auth";

不是

import {auth} from "@react-native-firebase/auth";
gkhanacer
2023-08-26