es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El metaReducer de ngrx-store-logger es incompatible.

Uso ngrx en mi proyecto Angular 12 y quería implementar el ngrx-store-logger para registrar mis acciones y almacenamiento. Aquí está parte de mi app.module.ts:

import { storeLogger } from 'ngrx-store-logger';
import { environment } from 'src/environments/environment';

export function logger(reducer: ActionReducer<appstate>): any {
  // por defecto, sin opciones
  return storeLogger()(reducer);
}

export const metaReducers = !environment.production? [logger] : [];

@NgModule({
  declarations: [ ... ]
  imports: [... StoreModule.forRoot(reducers, { metaReducers }), ... ]

  ...
}

VSC muestra este error:

 `Type ‘'((reducer: ActionReducer <AppState, Action>) => any)[]' no es asignable al tipo ‘'MetaReducer<{[x: string]: any;}, Action>[]'.
Los tipos de los parámetros 'reducer' y 'reducer' son incompatibles.
Falta el siguiente atributo en el tipo ‘'AppState': students, coachests(2322)’

Si bien mi compilación se ejecuta sin errores, no hay registros cuando se ejecutan cualquier acción.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la interfaz AppState utilizada en ActionReducer no tiene las propiedades students y coachests. Asegúrate de que la interfaz AppState tenga todas las propiedades necesarias y que estén correctamente tipadas.

    En cuanto al problema de registro, intenta agregar el metaReducer logger como el primer elemento en la matriz de metaReducers de la siguiente manera:

    export const metaReducers = !environment.production? [logger, ...] : [...];
    

    Esto asegurará que el logger se ejecute antes que cualquier otro metaReducer. Además, asegúrate de que la variable environment.production esté configurada en false en el archivo environment.ts, ya que el logger solo debe estar habilitado durante el desarrollo.

    Si el problema persiste, intenta registrar directamente desde la función reducer en tu archivo de almacenamiento, utilizando la API de console o una biblioteca de registro de terceros como winston. Esto puede ayudarte a identificar dónde se encuentra el problema en tu configuración.

Comments are closed.