从版本 7 更新到版本 8 后,NestJS 无法解析自定义存储库的依赖关系

NestJS can't resolve dependency of a custom repository after updating from version 7 to 8

我的 CidadesService 无法导入 Cidades 实体的自定义存储库。我遵循了 documentation,在从 Nest 7 更新到 Nest 8 之前,该项目运行良好了几个月,我不确定是否有我错过的重大变化。

如果我将 CidadesRepository 添加到 CidadesModule 的 providers 数组中,程序可以正常工作,但不需要这样做,CidadesService 应该能够仅使用 @InjectRepository 装饰器解决依赖关系。

app.module:

@Module({
    imports: [
        TypeOrmModule.forRoot(typeOrmConfig),
        CidadesModule,
    ],
    controllers: [AppController],
    providers: [AppService, SwaggerGenerator, { provide: APP_INTERCEPTOR, useClass: LoggingInterceptor }],
})
export class AppModule {
    constructor(private connection: Connection) {}
}

cidades.module:

@Module({
    imports: [TypeOrmModule.forFeature([Cidades])],
    controllers: [CidadesController],
    providers: [CidadesService], // If I add CidadesRepository here code works fine
})
export class CidadesModule {}

cidades.controller:

@Controller('cidades')
export class CidadesController {
    constructor(private cidadesService: CidadesService) {}
}

cidades.service:

@Injectable()
export class CidadesService {
    constructor(
        @InjectRepository(CidadesRepository)
        private cidadesRepository: CidadesRepository
    ) {}
}

cidades.repository:

@EntityRepository(Cidades)
export class CidadesRepository extends Repository<Cidades> {}

我想我找到了问题;我的代码没有正确遵循文档。为了注入自定义存储库,imports 数组应该导入自定义存储库而不是实体。

所以cidades.module应该是这样的:

@Module({
    imports: [TypeOrmModule.forFeature([CidadesRepository])],
    controllers: [CidadesController],
    providers: [CidadesService],
})
export class CidadesModule {}

此外 cidades.service 不需要 @InjectRepository 装饰器(但如果我离开它也可以工作):

@Injectable()
export class CidadesService {
    constructor(
        private cidadesRepository: CidadesRepository
    ) {}
}

不确定我是否从一开始就搞砸了,但无论如何该项目工作了几个月或导入方式发生了变化,但我的问题似乎已得到解决。

我仍然无法回复我的回答,所以如果有人有任何进一步的评论,它会保持开放状态。