Tengo el siguiente escenario en NestJS:
// user.service.ts @Injectable() export class UserService { constructor( private readonly userRepository: UserRepository, private readonly userProfileService: UserProfileService, ) {} } // user-profile.service.ts @Injectable() export class UserProfileService { constructor( private readonly userProfileRepository: UserProfileRepository, ) {} } // user.module.ts @Module({ imports: [DataRepositoryModule], // Required for the repository dependencies providers: [UserService, UserProfileService], exports: [UserService, UserProfileService], }) export class UserModule {}Sin embargo, cuando trato de usar UserService dentro de un controlador de otro módulo, aparece el siguiente error:
Nest can't resolve dependencies of the UserService (UserRepository, ?). Please make sure that the argument dependency at index [1] is available in the UserModule context. Potential solutions: - If dependency is a provider, is it part of the current UserModule? - If dependency is exported from a separate @Module, is that module imported within UserModule? @Module({ imports: [ /* the Module containing dependency */ ] })Código del controlador:
@Controller() export class UserController { constructor(private readonly userService: UserService) {} }Módulo controlador:
@Module({ imports: [], providers: [], controllers: [UserController], }) export class UserManagementModule {}Aplicación principal.module.ts:
@Module({ imports: [ UserManagementModule, UserModule, DataRepositoryModule.forRoot(), ], controllers: [], providers: [], }) export class AppModule {}Estoy confundido porque estoy haciendo exactamente lo que sugiere el error, agregando ambos servicios dentro de la matriz de proveedores (UserModule). ¿Qué me podría estar perdiendo?
Por su error, parece que hay una dependencia circular entre sus importaciones de archivos. Verifique que no tenga una cadena de importación circular (es decir, el Servicio A importa el Servicio B importa el Servicio A o el Servicio A importa el Módulo A importa el Servicio B importa el Servicio A). Esto puede volverse especialmente común cuando se usan archivos de barril dentro del mismo módulo.