firebase.initializeApp() 与 FirebaseApp.initializeApp()
Posted
技术标签:
【中文标题】firebase.initializeApp() 与 FirebaseApp.initializeApp()【英文标题】:firebase.initializeApp() vs 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 帐户登录并与服务器通信?
没关系,我解决了,把这个问题的答案放在这里。我仍然喜欢你的回答,它让我更好地理解了我的代码。
【参考方案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.
【讨论】:
以上是关于firebase.initializeApp() 与 FirebaseApp.initializeApp()的主要内容,如果未能解决你的问题,请参考以下文章
firebase.initializeApp 不是本机反应的功能
没有创建 Firebase 应用 [DEFAULT] = 调用 Firebase.initializeApp()
从 Firebase.initializeApp() 获取令牌
没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()