【问题标题】:How can I use forwardRef() for circular dependency?如何使用 forwardRef() 进行循环依赖?
【发布时间】:2021-01-16 04:10:27
【问题描述】:

如何使用 forwardRef() 进行循环依赖?我做了与文档相同的操作,但没有奏效,它给了我这个错误: GroupModule "imports" 数组的索引 [1] 处的模块未定义。

潜在原因:

范围 [AppModule -> EntityModule -> BranchModule] +91ms

【问题讨论】:

  • 问题解决了吗?我也一样
  • 抱歉回复晚了,你必须检查你所有的服务和模型,看看是否有错误的导入或注入可能需要循环依赖

标签: javascript typescript nestjs


【解决方案1】:

循环依赖发生在两个模块相互调用时,例如,如果我有一个动物模块和一个猫模型相互调用:

在 animal.module.ts 中:

import { forwardRef, Module } from '@nestjs/common';
import { AnimalController } from './animal.controller';
import { AnimalService }    from './animal.service';
import { AnimalRepository } from './animal.repository';

@Module({
    imports: [
        forwardRef(() => CatModule),
        
    ],
    controllers: [AnimalController],
    providers  : [AnimalService, AnimalRepository],
    exports    : [AnimalService],
})
export class AnimalModule { }

在 cat.module.ts 中:

import { forwardRef, Module } from '@nestjs/common';
import {CatController } from './cat.controller';
import { CatService }    from './cat.service';
import { CatRepository } from './cat.repository';

@Module({
    imports: [
        forwardRef(() => AnimalModule),
        
    ],
    controllers: [CatController],
    providers  : [CatService, CatRepository],
    exports    : [CatService],
})
export class CatModule { }

在 animal.service.ts 中:

export class AnimalService {

constructor(
   
    @Inject(forwardRef(() => CatService)) private readonly catService: CatService,
   

) {
   
}//rest of code here}

在 cat.service.ts 中:

export class CatService {

constructor(

    @Inject(forwardRef(() => AnimalService)) private readonly animalService: AnimalService,


) {

}//rest of code here}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多