Vue Firebase firebase/auth 不工作,但 firebase/firestore 工作正常。 “身份验证不是函数”

Posted

技术标签:

【中文标题】Vue Firebase firebase/auth 不工作,但 firebase/firestore 工作正常。 “身份验证不是函数”【英文标题】:Vue Firebase firebase/auth not working but firebase/firestore works fine. "auth is not a function" 【发布时间】:2021-05-08 03:04:31 【问题描述】:

知道为什么我的 auth 函数“不是函数”但我的 db 函数工作得很好吗?示例文件如下。

我在尝试调用 login() 方法时遇到的错误是

[Vue warn]: Error in created hook: "TypeError: _firebase__WEBPACK_IMPORTED_MODULE_2__.auth.auth is not a function"

使用 Vue 2 并通过 npm install firebase --save 安装 firebase。

src/firebase.js

import firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/auth';

const firebaseConfig = 
  apiKey: 'xx',
  authDomain: 'xx',
  databaseURL: 'xx',
  projectId: 'xx',
  storageBucket: 'xx',
  messagingSenderId: 'xx',
  appId: 'xx',
  measurementId: 'xx',
;
firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
const auth = firebase.auth();

export  db, auth ;

login.vue

import  auth  from '@/firebase';
login() 
  try 
      auth
        .auth()
        .signInWithEmailAndPassword(this.email, this.password)
        .then(() => 
          console.log(response);
        )
        .catch((error) => 
          console.log(error);
        );
   catch (error) 
    console.log(error);
  
,

文档中的示例代码,运行良好

import  db  from '@/firebase';
var docRef = db.collection("cities").doc("SF");

docRef.get().then((doc) => 
    if (doc.exists) 
        console.log("Document data:", doc.data());
     else 
        // doc.data() will be undefined in this case
        console.log("No such document!");
    
).catch((error) => 
    console.log("Error getting document:", error);
);

【问题讨论】:

【参考方案1】:

既然你这样做了

const auth = firebase.auth();
export  db, auth ;

你不应该这样做

login() 
  try 
      auth
        .auth()
        .signInWithEmailAndPassword(this.email, this.password)
        ...

但是

login() 
  try 
      auth
        .signInWithEmailAndPassword(this.email, this.password)
        ...

Firestore 运行良好,因为您正确地执行了 db.collection("cities").doc("SF"); 而不是 db.firestore().collection("cities").doc("SF");

【讨论】:

天哪,我花了大约两个小时在这上面,并没有注意到这一点。我会在今天晚些时候回复它,完成后我会标记它已解决:) 谢谢!

以上是关于Vue Firebase firebase/auth 不工作,但 firebase/firestore 工作正常。 “身份验证不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

Vue 2;在“firebase/app”中找不到导出“默认”(导入为“firebase”)

Vue 2 和 Firebase 9 - 在 'firebase/firestore' 中找不到“导出 'getFirestore'

Vue.js 和 Firebase “用户”信息

使用 Vue 将数据写入 Firebase

Vue + TypeScript + Firebase:如何键入包含 firebase `User` 的`ref` 的对象?

注册时无法将个人资料信息添加到 Firebase 集合中(vue | firebase)