我正在使用: “ @ 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只是遇到了缓存问题?
答案 0 :(得分:1)
最后,这是由于可观察的Firebase Ref作为InitAuthLister的一部分存储到我的存储状态,然后由于某种原因变得不确定,即使使用observable.pipe(take(1).map(...) .subscriber(...)。我什至不需要Ref仅需要ID。所有问题现在都解决了。
因此,请务必小心保存Firebase引用的位置/方式,因为它们在某些时候可能会超出范围。