我对这个问题没有一个确切的解决方案,但我意识到我与他人互动的方式
firebase
使我的申请更容易受到影响。也许你能在你的项目中发现我自己的一些设计缺陷?
我发现我在打电话
initializeApp
外面
try/catch
,这意味着每当遇到错误时,整个JavaScript模块都会失败。因此,第一个解决方法是正确地安全地处理初始化。
第二,这个错误在我给客户打电话的方式上变得很明显
firestore()
.例如,我第一次打电话给
firebase.firestore()
嵌入在返回
Promise
,即:
() => firebase.firestore().collection('someCollection').get().then(...).catch(e => ...);
现在,使用这种方法,如果
firestore
失败之前
许诺
可能会被退回,但实际上我们没有
catch
错误!这是因为它在链条中发生得太早,不适合一个
许诺
待创建。这也意味着,应用程序似乎会在比应用程序内部可能捕获到的东西更深层次上失败。但那是错的!
正确的实现是将交互包装为
火力基地。firestore()
在一分钟之内
许诺
第一:
return new Promise(resolve => firebase.firestore().collection(...)).then(q => ...).catch(e =>...);
希望这能有所帮助。我知道这是个棘手的问题!