Aquí hay un error algo inútil que recibo en mi aplicación Angular/TypeScript. Hasta que alguien mejore el mensaje de error, ¿qué podemos hacer al respecto? ¿Cuáles son las situaciones más probables que hacen que esto suceda?
Uncaught Error: Encountered undefined provider! Usually this means you have a circular dependencies (might be caused by using 'barrel' index.ts files. at Object.syntaxError at eval at Array.forEach (native) [<root>] at CompileMetadataResolver._getProvidersMetadata at CompileMetadataResolver.getNgModuleMetadata at CompileMetadataResolver.getNgModuleSummary at eval ...Es muy difícil saber a partir del mensaje de error qué proveedor causa este problema. La forma en que logré depurar esto es la siguiente:
console.log('type', type); para ver en qué archivo está el proveedor indefinido (también puede registrar por consola otras variables relevantes allí).Para mí, solo reinicio el ng serve
Una posibilidad es intentar declarar un servicio y un módulo en el mismo archivo y declarar el módulo antes que el servicio:
import {Injectable, NgModule} from '@angular/core'; @NgModule({providers: [FooService]}) // WRONG: used before declared export class FooModule { } @Injectable() export class FooService { } Puede solucionar esto declarando el servicio primero, o puede usar forwardRef de esta manera:
import {forwardRef, Injectable, NgModule} from '@angular/core'; @NgModule({providers: [forwardRef(() => FooService)]}) export class FooModule { } @Injectable() export class FooService { }