@ angular / fire:错误TypeError:无法读取未定义的属性“ firebaseApp”

时间:2018-10-08 22:09:28

标签: angular typescript angularfire5

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

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

function* set_number_async(action: { payload: { number:number }, type:string }) {
    yield delay(1000);
    yield put(action_creators.get_action_of_set_number(action.payload));
}

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

并在我的authService中

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

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

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

如果我随后按照https://github.com/angular/angularfire2/blob/master/docs/install-and-setup.md可选自定义FireBaseApp名称添加到app.modules.ts中,例如 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) 或任何其他自定义应用名称,例如“ 123App”。控制台错误消失,firebase正常运行。

(更新:无需触摸此代码,仅更新了另一个区域中的某些Firebase函数,现在即使使用自定义应用程序名称,我也遇到了上面的错误!发生了什么事)

为什么我需要设置一个可选的名称才能工作,即使名称可以是随机的并且没有我的代码中未曾使用的真实含义?

在vscode中的app.modules.ts AngularFireModule.initializeApp(environment.firebase, 'firebaseApp'),中也有@ angular / fire部分错误,并在msg import { AngularFireModule } from '@angular/fire';下划线,一切正常,但是我需要包含@types是什么?清除这个或者自我最近从'angularfire2'更改为'@ angular / fire'以来,vscode只是遇到了缓存问题?

1 个答案:

答案 0 :(得分:1)

最后,这是由于可观察的Firebase Ref作为InitAuthLister的一部分存储到我的存储状态,然后由于某种原因变得不确定,即使使用observable.pipe(take(1).map(...) .subscriber(...)。我什至不需要Ref仅需要ID。所有问题现在都解决了。

因此,请务必小心保存Firebase引用的位置/方式,因为它们在某些时候可能会超出范围。