【问题标题】:The module at index [1] is of type "undefined". Check your import statements and the type of the module索引 [1] 处的模块属于“未定义”类型。检查您的导入语句和模块的类型
【发布时间】:2021-04-02 21:14:40
【问题描述】:

我在 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.

我尝试了什么:

  • 在构造函数的用户和任务文件的解析器文件中使用 forwardRef
@Inject(forwardRef(() => TaskService))
private readonly tasksService: TaskService
  • 实现OnModuleInit接口:
onModuleInit() {
  this.userService = this.moduleRef.get(UserService);
}
  • 使用不带 index.ts 文件的导入:
import { TaskModule } from '../task/task.module';

user.module

@Module({
  providers: [UserService, UserResolver],
  exports: [UserService],
  imports: [JournalModule, PlanModule, TaskModule],
})
export class UserModule {}

task.module

@Module({
  providers: [TaskService, TaskResolver],
  exports: [TaskService],
  imports: [UserModule],
})
export class TaskModule {}

plan.module

@Module({
  providers: [PlanService, PlanResolver, GoalResolver],
  imports: [TaskModule, ProgramModule],
  exports: [PlanService],
})
export class PlanModule {}

【问题讨论】:

    标签: typescript graphql nestjs circular-dependency


    【解决方案1】:

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

    user.module.ts

    @Module({
      providers: [UserService, UserResolver],
      exports: [UserService],
      imports: [JournalModule, PlanModule, forwardref(() => TaskModule)],
    })
    export class UserModule {}
    

    task.module.ts

    @Module({
      providers: [TaskService, TaskResolver],
      exports: [TaskService],
      imports: [forwardRef(() => UserModule)],
    })
    export class TaskModule {}
    

    【讨论】:

      猜你喜欢
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 2021-11-25
      • 2020-11-19
      • 2020-10-08
      • 2019-04-12
      • 1970-01-01
      相关资源
      最近更新 更多