【问题标题】:firebase.initializeApp() vs FirebaseApp.initializeApp()firebase.initializeApp() 与 FirebaseApp.initializeApp()
【发布时间】:2021-08-19 11:18:15
【问题描述】:

我目前正在尝试使用“expo-notifications”中的 Notifications 包设置推送通知,我只是收到以下错误,我无法解决它:

[错误:调用本机方法时遇到异常:在模块 ExpoPushTokenManager 上执行导出方法 getDevicePushTokenAsync 时发生异常:默认 FirebaseApp 未在此进程 com 中初始化。------。确保首先调用 FirebaseApp.initializeApp(Context)。]

问题是,这条消息完全激怒了我,因为我确实打电话:

import * as firebase from "firebase";

然后:

firebase.initializeApp(ApiKeys);

在我的应用程序开始时。

我现在是否需要安装 Firebase/App 软件包才能执行FirebaseApp.initializeApp()?那我需要初始化我的应用程序 2 次吗?

expo 的文档都没有提到这样的错误,我也没有在 firebase 文档中找到与此错误相关的任何内容,我真的很努力解决这个问题。

【问题讨论】:

  • 你应该只需要初始化一次。但是,似乎无论在哪里执行getDevicePushTokenAsync,它都会在您调用initializeApp 之前被调用,或者它正在使用FirebaseApp 的不同实例(例如,使用自定义名称)。您需要调查为什么会出现这种情况,特别注意您的导入顺序。有些文件可能会在你的主文件之前被导入和执行。
  • 我的意思是我通过我的应用程序使用一个帐户登录到 firebase,并从数据库中检索信息,这发生在我的 initializeApp() 调用之后,这让我很难找到错误.如果我的应用无法初始化,我如何能够在我的应用中使用我的 firebase 帐户登录并与服务器通信?
  • 没关系,我解决了,把这个问题的答案放在这里。我仍然喜欢你的回答,它让我更好地理解了我的代码。

标签: javascript firebase react-native expo


【解决方案1】:

显然,在 expo 文档中根本没有提到 app/build.gradle 文件中的导入。它缺少以下行:

implementation("com.google.firebase:firebase-iid")

您需要将其放入您的 app/build.gradle 文件中以使其工作。

I found it in the following forum, the posts are just one month old so its a quite new bug.

【讨论】:

    猜你喜欢
    • 2020-04-24
    • 1970-01-01
    • 2022-07-01
    • 2017-06-24
    • 2016-09-28
    • 2023-03-19
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多