Search code examples
typescriptnestjs

NestJs v9 doesn't resolve my dependency eventhough it seems to be properly imported. The same project used to work in NestJs 7


I've got a module exporting a DatabaseUserRepository :

@Module({
  imports: [TypeOrmConfigModule, TypeOrmModule.forFeature([Project, User])],
  providers: [DatabaseProjectRepository, DatabaseUserRepository],
  exports: [DatabaseProjectRepository, DatabaseUserRepository], // I'm explictely exporting DatabaseProjectRepository
})
export class RepositoriesModule {}

And another project is trying to inject it in a custom provider :

@Module({
  imports: [LoggerModule, EnvironmentConfigModule, RepositoriesModule, ExceptionsModule],
})
export class ProjectUsecasesModule {
  static GET_PROJECT_USECASE = 'getProjectUsecases';

  static register(): DynamicModule {
    return {
      module: ProjectUsecasesModule,
      imports: [RepositoriesModule], // And here I'm importing the module containing DatabaseProjectRepository
      providers: [
        {
          inject: [DatabaseProjectRepository], 
          provide: ProjectUsecasesModule.GET_PROJECT_USECASE,
          useFactory: (ProjectRepository: DatabaseProjectRepository) => new GetProjectUseCases(ProjectRepository), // And here nest complains it cannot find DatabaseProjectRepository
        },

I have the following error at runtime :

Nest can't resolve dependencies of the getProjectUsecases (?). Please make sure that the argument DatabaseProjectRepository at index [0] is available in the ProjectUsecasesModule context.

This code used to work in nest v7 without needed to import the RepositoriesModule at all (which surely was not the intended behaviour either).

Does someone have any idea what would be causing my problem ?


Solution

  • I eventually found the issue.

    Above in my file I wrote

    import { DatabaseProjectRepository } from '../repositories/Project.repository';
    

    instead of

    import { DatabaseProjectRepository } from '../repositories/project.repository'; // i.e. lowercase project
    

    The incorrect casing was not preventing my code from building, but it was somehow messing with Nest module resolution ... !