无法使用 Ngrx 读取未定义的属性“firebaseApp”

Posted

技术标签:

【中文标题】无法使用 Ngrx 读取未定义的属性“firebaseApp”【英文标题】:Cannot read property 'firebaseApp' of undefined using Ngrx 【发布时间】:2019-02-06 01:33:55 【问题描述】:

分配完整 Firebase 身份验证返回时出错

我正在登录我的应用程序,一旦登录成功,我就会调用一个操作来更改我的应用程序的状态,以接收 Firebase 身份验证的经过身份验证的用户的数据。

当我尝试将整个对象传递给user 时,会出现以下错误:

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

当我在操作中使用从 Firebase 服务器返回的整个对象启动 constructor(user: any) 时,就会发生这种情况。

但是,如果我使用:(id, displayName, email) 访问对象的其他属性,则不会发生此错误,仅当我尝试分配返回的整个对象时才会发生此错误。

auth.effets.ts

@Effect()
loginAction$: Observable<Action> = this._actions$
    .ofType(authActions.ActionsTypes.LOGIN_REQUESTED).pipe(
        map((action: authActions.LoginCompletedAction) => action.payload),
        switchMap(payload => this._authService.loginWithEmailAndPassword(payload.user).pipe(
            map((res) => (new authActions.LoginCompletedAction(new authActions.AuthUserPayload(res.user)))),
            catchError((error) => of(new authActions.AuthErrorAction( error: error )))
        ))
    );

res.user -> ERROR OCCURS(调用方法时返回 Firebase signInWithEmailAndPassword(电子邮件,密码))

res.user.displayName -> 这样就不会发生错误并且 displayName 使用 Ngrx 在身份验证状态下添加。

auth.actions.ts

// ... omitted
export class AuthUserPayload 
    constructor(public user: any)  
        console.log(user); 
        // I have the feedback but the error occurs.
        // the error just does not happen when I do not assign the entire user object.


    

app.module.ts:

AngularFireModule.initializeApp(environment.firebase),
AngularFireAuthModule,
AngularFirestoreModule.enablePersistence(),
AngularFireDatabaseModule

【问题讨论】:

【参考方案1】:

对我来说,这个问题似乎是与 storeFreeze 的冲突。从我的 metaReducers 中删除它可以消除错误。我没有进一步研究它。

【讨论】:

如果您尝试返回包含未格式化数据的 Promise 并产生错误,则只需提取所需的一个。

以上是关于无法使用 Ngrx 读取未定义的属性“firebaseApp”的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Ngrx 读取未定义的属性“firebaseApp”

Firebase 函数:无法读取未定义的属性“user_id”

无法读取未定义类型错误的属性“推送”:无法读取未定义错误的属性“推送”

使用地图时反应'无法读取未定义的属性'

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

`无法读取未定义的属性(读取'组件')`