首页 > 解决方案 > 类型错误:firebaseApp.firestore 不是函数。在尝试在 Reactjs 项目中使用它时

问题描述

你好,第一次发帖,所以我一直在努力解决这个错误,并尝试在这里修复其他错误,但它在这里不起作用是我的 firebase_init.js 代码:

import * as firebase from "firebase/app";

const firebaseConfig = {
   apiKey: ""
   authDomain:""
   projectId:""
   storageBucket:""
   messagingSenderId:""
   appId:""
   measurementId:""
};

const firebaseApp = firebase.initializeApp(firebaseConfig);

const db = firebaseApp.firestore();
const auth = firebaseApp.auth();

export { db, auth };

在检查文档后,我将这些代码复制到了 react 项目公共文件夹中的 index.html 中:


    <script defer src="https://www.gstatic.com/firebasejs/8.10.0/firebase-auth.js"></script>
    <script defer src="https://www.gstatic.com/firebasejs/8.10.0/firebase-firestore.js"></script>
    
    // ...
    
    <script defer src="../src/firebase-init.js"></script>

仍然没有任何效果,尝试了不同的导入,我还尝试删除节点模块和 package-lock.json 并重新安装,它最终弄乱了节点模块中的很多东西,所以这也不起作用。因此,对解决此问题的任何帮助将不胜感激。

标签: javascriptreactjsfirebasefirebase-authenticationreact-hooks

解决方案


更新您的 firebase 文件以包含您计划使用的服务的导入。在您尝试初始化 auth 和 firestore 时,脚本引用可能根本不可用:

import firebase from "firebase/app";
// static import of firestore
import "firebase/firestore";
// static import of auth
import "firebase/auth";

const firebaseConfig = {
   apiKey: ""
   authDomain:""
   projectId:""
   storageBucket:""
   messagingSenderId:""
   appId:""
   measurementId:""
};

const firebaseApp = firebase.initializeApp(firebaseConfig);

const db = firebaseApp.firestore();
const auth = firebaseApp.auth();

export { db, auth };

请记住,这是针对 Firebase 的第 8 版。此答案时的较新版本,即版本 9,看起来会大不相同:

import { initializeApp }  from "firebase/app";
import { getFirestore } from 'firebase/firestore/lite';
import { getAuth } from 'firebase/auth';

const firebaseConfig = {
   apiKey: ""
   authDomain:""
   projectId:""
   storageBucket:""
   messagingSenderId:""
   appId:""
   measurementId:""
};

const firebaseApp = initializeApp(firebaseConfig);

const db = getFirestore(firebaseApp);
const auth = getAuth(db);

export { db, auth };

推荐阅读