Closed. This question needs debugging details。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

去年关闭。



Improve this question




我正在开发Ionic应用程序,正在将Firestore用作数据库,并使用离线模式。
import {AngularFirestoreModule} from '@ angular / fire / Firestore';
AngularFirestoreModule.enablePersistence (),

当我打开应用程序时,即使在脱机模式下,一切也都可以很好地工作。
但是,如果应用程序在重新打开时在后台模式下保持打开状态,则始终会指示此错误:

FIRESTORE(6.2.4)内部声明失败:AsyncQueue已经存在
失败:在索引数据库中遇到内部错误
服务器。

而且我再也无法导航到应用程序中的任何位置,因为我的条件是订阅一直有效,直到组件被销毁为止(这是在更改页面时发生的)
takeUntil (componentDestroyed (this)):

我收到以下错误:

“退订期间发生了1个错误:1)错误:FIRESTORE(6.2.4)
内部声明失败:AsyncQueue已经失败:内部
索引数据库服务器中遇到错误“

整个应用程序停止工作,不得不关闭并重新打开它很烦人。

有什么不同的方法吗?我已经看过StackOverflow,Github,所有Google,找不到任何解决方案。
我看到的其他应用程序(如Netflix,HBO等)所做的。就是说,当您重新打开应用程序时,它并没有完全停留在原处,它会警告您它正在​​加载,完成加载后,它会使您非常接近离开应用程序之前的状态。我想它有一个背景和前景变化检测器以及每个事件的功能。

我以为离子周期可以解决这个问题,例如:
-检测对背景的更改,如果对前景进行任何更改,则退订并重新订阅。

您还知道其他方式吗?

最佳答案

我解决的那个错误:

    window.onerror = function(error) {
  if (error.indexOf("An internal error was encountered in the Indexed Database server") >= 0) {
    // Refresh the page to restore IndexedDb to a working state.
    window.location.reload();
  }
};

关于如何观察背景和前景的状态变化:
import { Platform } from 'ionic-angular';

@Component({
  template: `OK`
})

constructor(public platform: Platform) {

    platform.ready().then(() => {

      if (platform.is('cordova')){

        //Subscribe on pause
        this.platform.pause.subscribe(() => {
          //Hello pause
        });

        //Subscribe on resume
        this.platform.resume.subscribe(() => {
          window['paused'] = 0;
        });
       }
    });
}

希望他们能为您打招呼。

关于ios - Ionic 4 IOS FIRESTORE内部声明失败:AsyncQueue已经失败:在索引数据库服务器中遇到内部错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57443547/

10-12 00:25
查看更多