1

我正在使用:“@angular/core”:“^6.1.0”,...“@angular/fire”:“^5.0.2”,“firebase”:“^5.3.1”,

如果在我的 app.modules.ts 我有:

import { AngularFireModule } from '@angular/fire';
...
imports: [
...
AngularFireModule.initializeApp(environment.firebase),
...
]

在environments/environment.ts中使用我的firebase配置设置,

并在我的 authService

initAuthListener() {
        this.afAuth.authState.subscribe(user => { ... }
}

然后我得到以下控制台错误,并且:

ERROR TypeError: Cannot read property 'firebaseApp' of undefined
    at Object.get [as app] (http://localhost:4200/vendor.js:153576:31)
    at http://localhost:4200/vendor.js:162834:9
    at Array.forEach (<anonymous>)
    at deepFreeze (http://localhost:4200/vendor.js:162831:33)
    at http://localhost:4200/vendor.js:162837:7
    at Array.forEach (<anonymous>)
    at deepFreeze (http://localhost:4200/vendor.js:162831:33)
    at http://localhost:4200/vendor.js:162837:7
    at Array.forEach (<anonymous>)
    at deepFreeze (http://localhost:4200/vendor.js:162831:33)

如果我然后按照https://github.com/angular/angularfire2/blob/master/docs/install-and-setup.md 或任何替代自定义应用程序名称将可选的自定义 FireBaseApp 名称添加到app.modules.ts ,比如说“123App”。控制台错误消失,firebase 工作。AngularFireModule.initializeApp(environment.firebase, 'firebaseApp'),

(更新:不接触此代码,仅在另一个区域更新了一些 firebase 功能,现在即使使用自定义应用程序名称,我也收到上述错误!发生了什么事)

为什么我需要设置可选名称才能使其工作,即使该名称可以是随机的并且没有真正的含义,因为在我的代码中的其他任何地方都没有使用?

同样在 vscode 中,app.modules.tsimport { AngularFireModule } from '@angular/fire';的 @angular/fire 部分错误带有 msg 下划线[ts] cannot find module 'angularfire2',一切正常,但是我需要包含什么 @types 来清除此问题,或者自从我更改后 vscode 刚刚出现缓存问题最近从“angularfire2”到“@angular/fire”?

4

1 回答 1

3

最后,这是由于可观察的 firebase Ref 作为 InitAuthLister 的一部分存储到我的 Store State 中,然后由于某种原因变得未定义,即使使用 observable.pipe(take(1).map(...).subscriber( ...). 我什至不需要 Ref 只需要 Id。现在都解决了。

因此,请注意存储 firebase refs 的位置/方式,因为它们可能会在某些时候超出范围。

于 2018-10-09T07:07:49.917 回答