问题描述
我正在世博会上开发一个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.lock
和package-lock.json
之间出现同步问题。这本身不会造成太大的问题,因为简单的yarn
或yarn install <dependency>
就可以解决问题。然而,该依赖项碰巧需要预先存在的依赖项,而这些依赖项的版本与我的EXPO版本预期的依赖项版本不同。这个IDBIndex
错误是如何触发的对我来说仍然是个谜,但最终我所要做的就是删除我所有的锁定文件和node_modules
,执行expo update
,最后执行yarn
以重新安装所有现在兼容的包。
如果任何人偶然发现这个答案,可以给出一个可能的解释,解释为什么这个修复的事情,那将是非常感激的。