Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Typescript 索引[1]处的模块类型为;“未定义”;。检查导入语句和模块的类型_Typescript_Graphql_Nestjs_Circular Dependency - Fatal编程技术网

Typescript 索引[1]处的模块类型为;“未定义”;。检查导入语句和模块的类型

Typescript 索引[1]处的模块类型为;“未定义”;。检查导入语句和模块的类型,typescript,graphql,nestjs,circular-dependency,Typescript,Graphql,Nestjs,Circular Dependency,我在NestJs中遇到了循环依赖的问题。错误: Scope [AppModule -> PlanModule -> TaskModule] +17ms Error: Nest cannot create the UserModule instance. The module at index [1] of the UserModule "imports" array is undefined. 我尝试的是: 在construcor中的用户和任务文件中使用解析器

我在NestJs中遇到了循环依赖的问题。错误:

Scope [AppModule -> PlanModule -> TaskModule] +17ms
Error: Nest cannot create the UserModule instance.
The module at index [1] of the UserModule "imports" array is undefined.
我尝试的是:

  • 在construcor中的用户和任务文件中使用解析器文件中的forwardRef:
  • 实现OnModuleInit接口:
  • 使用不带index.ts文件的导入:
用户模块

@Module({
  providers: [UserService, UserResolver],
  exports: [UserService],
  imports: [JournalModule, PlanModule, TaskModule],
})
export class UserModule {}
@Module({
  providers: [TaskService, TaskResolver],
  exports: [TaskService],
  imports: [UserModule],
})
export class TaskModule {}
@Module({
  providers: [PlanService, PlanResolver, GoalResolver],
  imports: [TaskModule, ProgramModule],
  exports: [PlanService],
})
export class PlanModule {}
任务模块

@Module({
  providers: [UserService, UserResolver],
  exports: [UserService],
  imports: [JournalModule, PlanModule, TaskModule],
})
export class UserModule {}
@Module({
  providers: [TaskService, TaskResolver],
  exports: [TaskService],
  imports: [UserModule],
})
export class TaskModule {}
@Module({
  providers: [PlanService, PlanResolver, GoalResolver],
  imports: [TaskModule, ProgramModule],
  exports: [PlanService],
})
export class PlanModule {}
计划模块

@Module({
  providers: [UserService, UserResolver],
  exports: [UserService],
  imports: [JournalModule, PlanModule, TaskModule],
})
export class UserModule {}
@Module({
  providers: [TaskService, TaskResolver],
  exports: [TaskService],
  imports: [UserModule],
})
export class TaskModule {}
@Module({
  providers: [PlanService, PlanResolver, GoalResolver],
  imports: [TaskModule, ProgramModule],
  exports: [PlanService],
})
export class PlanModule {}

您的
UserModule
导入
TaskModule
,而
TaskModule
导入
UserModule
,因此您需要为这些模块导入以及服务注入设置正向引用。它看起来是这样的:

user.module.ts

@模块({
提供者:[UserService,UserResolver],
导出:[UserService],
导入:[日志模块、计划模块、forwardref(()=>TaskModule)],
})
导出类UserModule{}
任务模块.ts

@模块({
提供程序:[TaskService,TaskResolver],
导出:[任务服务],
导入:[forwardRef(()=>UserModule)],
})
导出类TaskModule{}

您的
用户模块
导入
任务模块
,而
任务模块
导入
用户模块
,因此您需要为这些模块导入以及服务注入设置正向引用。它看起来是这样的:

user.module.ts

@模块({
提供者:[UserService,UserResolver],
导出:[UserService],
导入:[日志模块、计划模块、forwardref(()=>TaskModule)],
})
导出类UserModule{}
任务模块.ts

@模块({
提供程序:[TaskService,TaskResolver],
导出:[任务服务],
导入:[forwardRef(()=>UserModule)],
})
导出类TaskModule{}