在Firebase/Reaction本机(EXPO)上找不到变量:IDBIndex

人气:335 发布:2022-10-16 标签: firebase react-native

问题描述

我正在世博会上开发一个RN应用程序,以Firebase为后端。到目前为止,该应用程序只使用了Firebase身份验证和FireStore,无论出于什么原因,我都随机开始收到ReferenceError: Can't find variable: IDBIndex的错误。我调整了我的Firebase配置以适应v9标准,而不是使用compat包。我确保我的应用程序没有使用谷歌分析。我也已经降级到Firebase@9.1.0,它与世博会的文档和其他类似的post相匹配。 当Git运行时,我也恢复到了应用程序的以前版本(带有更早的依赖项和代码),但仍然得到了相同的错误。当这种情况发生时,我完全重新安装了节点和NPM,因为我认为这是可能发生这种情况的唯一其他可能的原因,但这也没有用(得到相同的IDB错误)。我仍然认为这是一个与Firebase有关的问题,但我几乎完全不知道这可能是什么。

这是我的Firebase配置:

import { initializeApp } from 'firebase/app'
import { getAuth, connectAuthEmulator } from "firebase/auth";
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

import {
  FIREBASE_API_KEY,
  FIREBASE_AUTH_DOMAIN,
  FIREBASE_PROJECT_ID,
  FIREBASE_STORAGE_BUCKET,
  FIREBASE_MESSAGING_SENDER_ID,
  FIREBASE_APP_ID,
  FIREBASE_MEASUREMENT_ID,
} from '@env';

const firebaseConfig = {
  apiKey: FIREBASE_API_KEY,
  authDomain: FIREBASE_AUTH_DOMAIN,
  projectId: FIREBASE_PROJECT_ID,
  storageBucket: FIREBASE_STORAGE_BUCKET,
  messagingSenderId: FIREBASE_MESSAGING_SENDER_ID,
  appId: FIREBASE_APP_ID,
  measurementId: FIREBASE_MEASUREMENT_ID,
};

const app = initializeApp(firebaseConfig);

export default app;
export const auth = getAuth(app);
export const firestore = getFirestore(app);

if (process.env.NODE_ENV === "development") {
    connectAuthEmulator(auth, "http://localhost:9099");
    connectFirestoreEmulator(firestore, "localhost", 8080);
}

如果您需要查看更多文件或需要了解更多详细信息,请务必让我知道。

推荐答案

本帖子中提到的其他修复绝对都是有效的(我也看到过其他论坛帖子建议Firebase降级,但在我的情况下没有奏效。)

我认为确认是什么解决了我的问题可能会对我有所帮助。当我的一个团队成员使用npm而不是expo(默认为yarn)安装依赖项时,问题就出现了。这导致yarn.lockpackage-lock.json之间出现同步问题。这本身不会造成太大的问题,因为简单的yarnyarn install <dependency>就可以解决问题。然而,该依赖项碰巧需要预先存在的依赖项,而这些依赖项的版本与我的EXPO版本预期的依赖项版本不同。这个IDBIndex错误是如何触发的对我来说仍然是个谜,但最终我所要做的就是删除我所有的锁定文件和node_modules,执行expo update,最后执行yarn以重新安装所有现在兼容的包。

如果任何人偶然发现这个答案,可以给出一个可能的解释,解释为什么这个修复的事情,那将是非常感激的。

161