【问题标题】:Firebase set() promise stuck on pendingFirebase set() 承诺停留在待处理状态
【发布时间】:2017-10-11 16:55:10
【问题描述】:

我正在尝试像这样对 Firebase 数据库进行简单的写入:

return app.register( email, password ).then( f => {
  return app.login( email, password )
} ).then( f => {
  return app.currentUser()
} ).then( user => {
  return app.firebase.db().ref( `users/${user.uid}` ).set( {color: 'red'} )
} ).then( f => {
  console.log( "This never triggers" )
} )

app.register 在哪里:

( firebase, email, password ) => firebase.auth().createUserWithEmailAndPassword( email, password )

app.login 在哪里:

( firebase, email, password ) => firebase.auth().signInWithEmailAndPassword( email, password )

app.currentUser 是:

firebase => {
    return new Promise( ( resolve, reject ) => {
        firebase.auth( ).onAuthStateChanged( user => {
            user ? resolve( user ) : reject( user )
        } )
    } )
}

app.firebase 是一个初始化的 Firebase 引用。

我没有收到任何错误,但 set() 永远不会解决。

我非常卡住,感谢任何帮助。

【问题讨论】:

  • 您是否尝试过 catch 链中的错误?
  • 是的。但是由于 .set() 似乎卡在挂起状态 .catch() 也不会触发。我在 mocha 测试环境中运行它,并尝试了长达 60 秒的超时,看看会发生什么。没有错误,什么都没有。
  • @Mentor 看来你在.ref... 通话中使用了`(backticks),我希望它是正常的引号,对吧?
  • 不,他们是反语。我使用 babel 在 webpack 中进行转译。 path/${thing} 等于 'path/' + 事物

标签: javascript node.js firebase firebase-realtime-database firebase-authentication


【解决方案1】:

问题解决了。

当使用部分导入时:

import firebase from 'firebase/app'
import auth from 'firebase/auth'
import db form 'firebase/database'

当某些元素不在浏览器中运行时,Firebase 会默默地失败(我使用的是 Mocha)。

解决方案(很糟糕)是导入完整的包:

import firebase from 'firebase'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-12-18
    • 2022-01-20
    • 2021-07-22
    相关资源
    最近更新 更多