侧注
我创建了一个用于复制的简约存储库: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
。但是如您所见,我正在导入模块,因此希望可以访问导出的服务。
我该如何解决?
如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
要解决此问题,我必须按照此处所述的两种方式进行操作
https://docs.nestjs.com/fundamentals/circular-dependency#forward-reference
用于服务构造函数和模块