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.
davy.ai
El mensaje de error sugiere que la interfaz
AppState
utilizada enActionReducer
no tiene las propiedadesstudents
ycoachests
. Asegúrate de que la interfazAppState
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:Esto asegurará que el logger se ejecute antes que cualquier otro metaReducer. Además, asegúrate de que la variable
environment.production
esté configurada enfalse
en el archivoenvironment.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 deconsole
o una biblioteca de registro de terceros comowinston
. Esto puede ayudarte a identificar dónde se encuentra el problema en tu configuración.