@ firebase / database:FIREBASE警告:用户回调抛出了异常。 TypeError:无法读取属性' myID'未定义的

时间:2018-05-02 19:33:25

标签: angularjs firebase geofire

我刚刚使用geofire建立了一个angularjs app来定位。它在生产中完美运行,但在将其部署到firebase时会出现问题。我相信错误应该来自这里

getLocations(radius: number, coords: Array<number>) {
    console.log(radius, coords)
    this.geoFire.query({
        center: coords,
        radius: radius
    })
    .on('key_entered', (userKey, location, distance) => {
        //we need to check this because this.hits the behavioursubject already cached previous result and geofire fetches again each time we go back to homepage
        const existAlready = this.hits.value.filter(h=>h.userKey === userKey)
        if(existAlready.length > 0){
            return
        }
        console.log(userKey)
        const u = this.userList.query.ref
                      .child(`/${userKey}`)
                      .on('value',s=>{
                        const {name, address} = s.val()
                        console.log(s.val())
                        let hit = {
                            location,
                            distance,
                            name,
                            address,
                            userKey
                        }

                        let currentHits = this.hits.value
                        currentHits.push(hit)
                        this.hits.next(currentHits)

                        this.eventService.sendMessage(Constants.EVENT_MESSAGES.LOADING, true)
                      })
    })
}

以上代码用于在应用加载后立即获取我周围的位置。但相反,我得到了这个错误

  

@ firebase / database:FIREBASE警告:用户抛出了异常   打回来。 TypeError:无法读取属性&#39; myID&#39;未定义的

错误仅出现在生产中

2 个答案:

答案 0 :(得分:0)

我的应用程序中的生产中也出现了同样的错误。似乎解决它的唯一问题是清除我的谷歌缓存,历史记录和cookie。它不是一个永久性的修复,但试着看它是否有帮助。

答案 1 :(得分:0)

不确定这是否是解决方案,但这对我有用。我认为,一旦部署新构建而不清除缓存,就会出现真正的问题。

所以对我而言,我部署了eveytime,我必须再次清除缓存。

有趣的是,这恰好发生在chrome中。我在Edge测试过,我不必经历这个。