typescript NestJsv9没有解析我的依赖项,即使它看起来被正确导入了,同样的项目曾经在NestJs7中工作

xvw2m8pv  于 2023-02-05  发布在  TypeScript
关注(0)|答案(1)|浏览(99)

我有一个导出DatabaseUserRepository的模块:

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

而另一个项目正试图将其注入自定义提供程序:

@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
        },

我在运行时遇到以下错误:
Nest无法解析getProjectUsecases(?)的依赖项。请确保索引[0]处的参数DatabaseProjectRepository在ProjectUsecasesModule上下文中可用。
这段代码过去在nest v7中工作,根本不需要导入RepositoriesModule(这肯定也不是预期的行为)。
有人知道是什么导致了我的问题吗?

3mpgtkmj

3mpgtkmj1#

我终于找到了问题所在。
在我的档案上面我写了

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

代替

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

不正确的大小写并没有阻止我的代码构建,但它在某种程度上扰乱了Nest模块的分辨率...!

相关问题