Sidenote
我为复制目的创建了一个简约的存储库:Link to reproduction repo
我刚刚将Nest项目更新为7.0.0版。我正在使用TypeORM,目前在我的项目中有3个模块。它们都需要从另一个模块访问文件
GraphNodesModule
需要访问:
GraphsModule
需要访问:
ModulesModule
需要访问:
他们中的所有3个人都导出了他们的服务,以使其可以在其他模块中访问。我的GraphNodesModule
导入其他两个模块以访问其服务,并注意循环依赖项
@Module({
imports: [
TypeOrmModule.forFeature([GraphNodesRepository]),
forwardRef(() => GraphsModule),
ModulesModule,
],
providers: [GraphNodesService],
controllers: [GraphNodesController],
exports: [GraphNodesService],
})
GraphsModule
导入GraphNodesModule来访问服务,并注意循环依赖项
@Module({
imports: [
TypeOrmModule.forFeature([GraphsRepository]),
forwardRef(() => GraphNodesModule),
],
providers: [GraphsService],
controllers: [GraphsController],
exports: [GraphsService],
})
ModulesModule
不需要导入其他模块,只需注册其他存储库
@Module({
imports: [
TypeOrmModule.forFeature([ModulesRepository, GraphNodesRepository]),
],
providers: [ModulesService],
controllers: [ModulesController],
exports: [ModulesService],
})
运行应用程序时出现以下错误
[嵌套] 3580-2020-03-15 11:55:19 [ExceptionHandler]嵌套不能解决GraphNodesService(GraphNodesRepository,?,ModulesService)。请确保位于的参数依赖项索引1在GraphNodesModule上下文中可用。
GraphNodesService
的构造函数是
constructor(
@InjectRepository(GraphNodesRepository)
private readonly graphNodesRepository: GraphNodesRepository,
private readonly graphsService: GraphsService,
private readonly modulesService: ModulesService,
) {}
因此GraphsService
似乎丢失了。但是如您所见,我正在导入模块,因此希望可以访问导出的服务。
我该如何解决?
如果需要更多信息,请告诉我。
为了解决这个问题,我必须按照此处描述的两种方法进行操作
https://docs.nestjs.com/fundamentals/circular-dependency#forward-reference