Выражения функций не поддерживаются в декораторах в ‘auth’

#angular #ngrx

#angular #ngrx

Вопрос:

Я пытаюсь построить свой проект angular 7 с использованием aot, но aot выдает следующую ошибку

 ERROR in app/app.store.ts(10,25): Error during template compile of 'AppStoreModule'

Function expressions are not supported in decorators in 'auth'
'auth' references 'auth'
  'auth' contains the error at app/state/auth/auth.reducers.ts(12,41)
    Consider changing the function expression into an exported function.
  

Я проверил редуктор ngrx для аутентификации, который будет выглядеть следующим образом

 export const auth: ActionReducer<any> = (
  state = initialState,
  action: authActions
) => {
  switch (action.type) {
    case Auth.AUTH_REFRESH:
    case Auth.AUTH_LOGIN:
      console.log(" reducer called");
      return Object.assign({}, state);
    case Auth.AUTH_LOGIN_SUCCESS:
      console.log("login success reducer");
      let token = localStorage.getItem("token");
      const decodedToken = helper.decodeToken(token);
      console.log(decodedToken.sub);
      return Object.assign({}, state, {
        currentUser: decodedToken.sub,
        loggedIn: !helper.isTokenExpired(token)
      });

    default:
      return state;
  }
};
  

Вот мой AppStoreModule

 @NgModule({
  imports: [
    StoreModule.forRoot({
      auth,
      app,
      search
    }),
    EffectsModule.forRoot([AuthEffects, AppEffects, SearchEffects])
  ]
})
  

Я не знаю, в чем проблема с кодом.

Ответ №1:

Это обычная проблема с компиляцией AOT, вам необходимо изменить функции с функций со стрелками на именованные функции, как указано здесь