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 ?
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 ... !