Closed. 这个问题需要调试细节 /help/minimal-reproducible-example 。目前不接受答案。
我正在开发一个 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;
});
}
});
}
我希望他们向您致以问候。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)