【问题标题】:FirebaseError: Expected type 'Ia', but it was: a custom Oa objectFirebaseError:预期类型“Ia”,但它是:自定义 Oa 对象
【发布时间】:2022-01-05 07:23:17
【问题描述】:

不知道为什么会出现此错误,这是我的设置。此错误仅发生在 Firestore 上。身份验证、功能、存储、实时数据库工作不确定我缺少什么。我按照firebase documentation 进行设置。

firebase.js

import { initializeApp } from "firebase/app";
import { initializeAppCheck, ReCaptchaV3Provider } from "firebase/app-check";
import { getDatabase, connectDatabaseEmulator } from "firebase/database";
import {
  getAuth,
  connectAuthEmulator,
  createUserWithEmailAndPassword,
  signInWithEmailAndPassword,
} from "firebase/auth";
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";
import {
  getFunctions,
  connectFunctionsEmulator,
  httpsCallable,
} from "firebase/functions";
import { getStorage, connectStorageEmulator } from "firebase/storage";
import Constants from "expo-constants";

// Initialize Firebase
const firebaseConfig = {
  apiKey: Constants.manifest.extra.apiKey,
  authDomain: Constants.manifest.extra.authDomain,
  dataBaseURL: Constants.manifest.extra.databaseURL,
  projectId: Constants.manifest.extra.projectId,
  storageBucket: Constants.manifest.extra.storageBucket,
  messagingSenderId: Constants.manifest.extra.messagingSenderId,
  appId: Constants.manifest.extra.appId,
};

const app = initializeApp(firebaseConfig);


export const firestore = {
  instance: () => {
    return getFirestore(app);
  },
  connectFirestoreEmulator: (host, port) => {
    return connectFirestoreEmulator(getFirestore(app), host, port);
  },
};


if (__DEV__) {
  try {
    firestore.connectFirestoreEmulator("localhost", "8080");

    console.log("====================================");
    console.log("connected to emulators....");
    console.log("====================================");
  } catch (error) {
    console.log("====================================");
    console.log(error, "error connectiong emulators");
    console.log("====================================");
  }
}

【问题讨论】:

    标签: reactjs firebase react-native google-cloud-firestore react-native-firebase


    【解决方案1】:

    由于您提到该错误似乎只发生在 Firestore 中,所以我遵循了与使用 Firestore 模拟器相关的documentation,并且我的应用成功连接到本地模拟器并检索了本地数据。

    我不确定您导出 Firestore 实例的方式是否会导致问题,但文档显示必须导入和使用该函数,并将 Firestore 实例作为参数传递。这是我测试的示例代码:

    firestore-config.js

    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
    
    const firebaseConfig = {
        // Configuration keys
    };
    
    const app = initializeApp(firebaseConfig);
    export const firestore = getFirestore(app);
    

    app.js

    import { firestore } from "./firestore-config";
    import { getDoc, doc, connectFirestoreEmulator } from "firebase/firestore";
    import "./App.css";
    
    export default function App() {
      try{
        connectFirestoreEmulator(firestore, "localhost", "8080");
        console.log("connected");
    
        const docRef = doc(firestore, "localTest", "localTestDoc");
        const getData = async () => {
          const docSnap = await getDoc(docRef);
          console.log(docSnap.data());
        }
      
        getData();
    
      }
      catch(err){
        console.log("error: ", err)
      }
      return <div className="App"></div>;
    }
    

    我可以看到来自模拟 Firestore 的数据作为输出。查看完整的错误堆栈跟踪也很有用,因为标题中的错误并不是真正的描述性。

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 2022-07-05
      • 2022-06-10
      • 2023-01-10
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      相关资源
      最近更新 更多