【问题标题】:Firebase gives error when trying to enable offline persistenceFirebase 在尝试启用离线持久性时出错
【发布时间】:2020-07-07 13:48:07
【问题描述】:

我正在尝试使用 Nuxt.js 在 Web 应用上启用离线持久性。但是,我收到一个错误:

Error enabling offline persistence. Falling back to persistence disabled: FirebaseError: [code=unimplemented]: 
This platform is either missing IndexedDB or is known to have an incomplete implementation. 
Offline persistence has been disabled.

我在plugins目录下firebase.js的代码是:

import firebase from 'firebase/app'
import 'firebase/firestore'

const config = {
        apiKey: '',
        authDomain: '',
        databaseURL: '',
        projectId: '',
        storageBucket: '',
        messagingSenderId: '',
        appId: '',
        measurementId: ''
}
firebase.initializeApp(config)

const fireDb = firebase.firestore();
fireDb.enablePersistence()
  .catch(function(err) {
      if (err.code == 'failed-precondition') {
          // Multiple tabs open, persistence can only be enabled
          // in one tab at a a time.
          // ...
          console.log(err.code);
      } else if (err.code == 'unimplemented') {
          // The current browser does not support all of the
          // features required to enable persistence
          // ...
          console.log(err.code);
      }
  });



export{fireDb}

如何解决此错误?应该注意的是,从 Firestore 读取或写入 Firestore 工作正常

【问题讨论】:

  • 这段代码是否打算在服务器端运行?如果是这样,这是意料之中的,因为 Firebase SDK 中没有针对服务器端平台的持久性实现。
  • @FrankvanPuffelen 没有收到您的评论通知。但是,这不是要在客户端上执行的。不过我已经想通了,我会尽快写一个答案
  • @FrankvanPuffelen 如果您愿意,我可以在另一个问题上使用您的专业知识。 stackoverflow.com/questions/60926389/…

标签: firebase google-cloud-firestore nuxt.js


【解决方案1】:

所以 Nuxt 具有服务器端和客户端执行。如果您希望仅在客户端(在 javascript 中)执行某些操作,则必须将其包装在 process.browser 中。

if(process.browser){
fireDb.enablePersistence()
  .catch(function(err) {
      if (err.code == 'failed-precondition') {
          // Multiple tabs open, persistence can only be enabled
          // in one tab at a a time.
          // ...
          console.log(err.code);
      } else if (err.code == 'unimplemented') {
          // The current browser does not support all of the
          // features required to enable persistence
          // ...
          console.log(err.code);
      }
  });
}

请注意,如果您要初始化 Firebase 云消息传递,则必须采用相同的方法。

如果您有一些 html 或组件,则必须将其包装在 <client-only></client-only> 中,因为 no-ssr 已被弃用

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 1970-01-01
    • 2017-04-05
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多