【问题标题】:Firebase Cloud Firestore throws "client is offline"Firebase Cloud Firestore 抛出“客户端离线”
【发布时间】:2018-03-18 02:12:22
【问题描述】:

在加载页面的 4 次中大约有 3 次我从 Firestore 客户端 SDK(Web)收到此错误。这极大地减慢了开发速度。身份验证、实时数据库和存储工作得很好。

Failed to get document because the client is offline.

对此我有什么办法吗?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    目前客户端和后端路由之间的交互会导致此问题。结果客户端认为网络出现故障并离线。

    我们很快就会推出解决方案。我无法保证确切的时间,但这是我们要解决的首要问题之一。

    感谢您的耐心等待。

    【讨论】:

    • 我们推出了一个修复程序。如果您再次看到此内容,请告诉我们。
    • 我发现最新版本的 Firestore (19.0.0) 存在问题。
    • 我仍然有这个错误的错误,我正在使用最新版本的现在 firebase-firestore:21.1.1 for android。你能解决这个问题吗?
    • 为 firebase.SDK_VERSION == 7.14.2 获取这个
    • 与 React 应用程序相同的错误。
    【解决方案2】:

    我更新了所有的软件包,但遇到了这个问题。
    我为我的 Web 应用启用了离线持久性并解决了问题:

    firebase.firestore().enablePersistence()
    

    https://firebase.google.com/docs/firestore/manage-data/enable-offline

    【讨论】:

      【解决方案3】:

      对我来说,同样的错误发生在

      1. project_id 错误
      2. 模拟器的端口是 8081 而不是 8080。(当端口是 8081 时,模拟器运行良好,UI 正常打开等等,但错误一直显示。我通过将端口更改回 8080 解决了这个问题)李>

      错误信息非常具有误导性。

      【讨论】:

      • 谢谢你,你是救命稻草!
      【解决方案4】:

      我刚刚花了大约 3 个小时试图修复它。我的模拟器有问题。我不得不删除它,然后创建新的,现在它正在工作。因此,如果您遇到此问题,请尝试一下。

      【讨论】:

        【解决方案5】:

        出现问题的原因可能是您在 React Native(RN CLI 而非 Expo)应用中集成了 firebase 'web' SDK。因此,为了在您的 react native 应用程序中使用 firebase,您必须遵循本教程:https://rnfirebase.io/

        它必须有效。

        【讨论】:

          【解决方案6】:

          对我来说,只需重新启动模拟器即可修复它。

          【讨论】:

          • 相同的代码适用于 iOS。我不敢相信我浪费了一整夜来解决问题,更新包,更新 gradle 的依赖项......直到我看到这个评论。谢谢你!!
          【解决方案7】:

          在我的应用程序中,安装后第一次运行时也会出现此错误。我能够通过刷新/重新启动 Activity 来摆脱上述错误。

          if (e.getMessage().equals("Failed to get document because the client is offline.")){
               finish();
               startActivity(getIntent());
          }
          

          此代码必须放在addOnFailureListener

          【讨论】:

            【解决方案8】:

            我遇到了一些问题。但我刚刚修好了。检查您的 projectId 是否正确。当您使用 Cloud Firestore 时,您需要它。

            export const environment = {
              production: false,
              firebaseConfig: {
                apiKey: 'XYZ',
                authDomain: 'XYZ.firebaseapp.com',
                databaseURL: 'https://XYZ.firebaseio.com',
                storageBucket: 'XYZ.appspot.com',
                projectId: 'XYZ' // <--- make sure project ID is here 
              }
            };
            

            【讨论】:

            • 它是正确的。 Firestore 有时有效,但有时会抛出错误
            【解决方案9】:

            对我来说,启用({ synchronizeTabs: true } ) 似乎有所帮助。

            【讨论】:

              【解决方案10】:

              以防万一有人在网络上遇到此问题(服务器端代码),只需尝试重新启动服务器并再次 ping 连接到 firebase 的端点即可。这对我有用!

              【讨论】:

                【解决方案11】:

                就我而言,我使用的是 Chrome 扩展程序 Moesif CORS。我禁用了扩展程序,它工作了。

                【讨论】:

                  【解决方案12】:

                  在我的情况下,我遇到了这个问题,并警告我应该更改我的数据库位置,因为它位于不同的区域。
                  我在 firebaseconfig 中使用我的 dsatabase 的 url 添加了一个 databaseURL 属性,之后它就可以正常工作了。

                  【讨论】:

                    【解决方案13】:

                    我的问题是我之前使用firebase-local-emulator 测试了我的应用程序,因此它的一些配置仍然启用,例如:

                    Firebase.firestore.apply {
                        if (DomainConstants.isOnTest) useEmulator("10.0.2.2", 8080)
                    }
                    

                    由于忘记设置isOnTest = false,应用依赖firebase-local-emulators数据(未运行)并抛出client is offline error

                    长话短说:检查您是否使用 firebase-local-emulator 配置了项目,并在您想使用“真实”数据库时将其关闭

                    【讨论】:

                      【解决方案14】:

                      尝试使用VPN,它会工作! 我切换到 VPN,它工作 100%。有时 Firebase 无法响应某些国家/地区的 IP 地址。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2022-07-01
                        • 2018-07-11
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2022-01-17
                        • 2012-10-18
                        • 1970-01-01
                        相关资源
                        最近更新 更多