Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nest js服务未定义,可能是由于循环依赖关系_Javascript_Node.js_Typescript_Dependency Injection_Nestjs - Fatal编程技术网

Javascript Nest js服务未定义,可能是由于循环依赖关系

Javascript Nest js服务未定义,可能是由于循环依赖关系,javascript,node.js,typescript,dependency-injection,nestjs,Javascript,Node.js,Typescript,Dependency Injection,Nestjs,我有两个模块ZohoModule和TaskModule。Zoho模块有一个ZohoService 任务模块有两个服务UtilityTaskService和TaskService 两者都作为任务模块提供程序添加,并在任务模块中导出 我的第一个问题是:为什么我必须在实用任务服务中为任务服务添加forwardref?如果我删除forwardref,它会给我一个依赖项错误,但这两个服务都是同一个模块的一部分 其次,当我从ZohoService调用utilityStasksservice中的方法时,如果u

我有两个模块
ZohoModule
TaskModule
。Zoho模块有一个
ZohoService

任务模块有两个服务
UtilityTaskService
TaskService
两者都作为任务模块提供程序添加,并在任务模块中导出

我的第一个问题是:为什么我必须在
实用任务服务
中为
任务服务
添加
forwardref
?如果我删除
forwardref
,它会给我一个依赖项错误,但这两个服务都是同一个模块的一部分

其次,当我从
ZohoService
调用
utilityStasksservice
中的方法时,如果
utilityStasksservice
正在调用
TasksService
中的所有服务都将变得未定义,则会出现严重的问题

乙二醇-

Zoho模块中的ZohoService.ts:

@Injectable()
export class ZohoService {
  constructor(
    private readonly utilityService: UtilityTaskService,
  ) { }

  callUtilityService(){
      this.utilityService.validate();
}
TaskModule中的UtilityTaskService.ts: (当TasksService是同一TaskModule的一部分时,为什么我必须添加
forwardref

TaskModule中的TasksService.ts:

@Injectable()
export class TasksService {
  constructor(
    @InjectModel('TaskType')
    private taskTypeModel: Model<ITaskTypeSchema>,
    private redisService: RedisService,
  ) { }

async create() {
  this.redis.fetchData();
  this.taskTypeModel.find();
}


我在这里被困了两天。

我不确定,但也许您应该在任务服务中转发您的
RedisService
,然后从TaskModule和UtilityTaskService中删除forwardRef。我不确定,但也许您应该在Tasks服务中转发您的
RedisService
,然后从TaskModule和UtilityTaskService中删除forwardRef。
@Injectable()
export class TasksService {
  constructor(
    @InjectModel('TaskType')
    private taskTypeModel: Model<ITaskTypeSchema>,
    private redisService: RedisService,
  ) { }

async create() {
  this.redis.fetchData();
  this.taskTypeModel.find();
}

@Module({
  imports: [MongooseModule.forFeature([
    { name: 'TaskType', schema: TaskTypeSchema },
  ]),
  TypeOrmModule.forFeature([CounterEntity]),
  // RedisModule,
  forwardRef(() => RedisModule),
  ],
  providers: [
    TasksService,
    UtlityTaskService,
  ],
  exports: [TasksService, UtilityTaskService],
  controllers: [TasksController],
})