nestjs中模块之间的循环依赖

Circular dependency between modules in nestjs

官方文档不清楚 nestjs 中的模块是如何工作的,我遇到了循环依赖的问题。好像我的模块结构搞砸了我想了解它有什么问题。我得到的错误是:

Nest cannot create the module instance. Often, this is because of a circular dependency between modules. Use forwardRef() to avoid it. (Read more: https://docs.nestjs.com/fundamentals/circular-dependency) Scope [AppModule -> UsersModule -> CategoriesModule]

这里是错误信息中提到的所有模块的导入部分。

AppModule:

UsersModule,
SmsRegistrationModule,
AuthModule,
SubscriptionModule,
EmailModule,
EntriesModule,
CategoriesModule,
AwsModule,
SharedModule

用户模块:

CategoriesModule

类别模块:

AwsModule,
SharedModule,

SharedModule添加到CategoriesModule模块时出现的错误。似乎我遗漏了一些关于这些模块如何通信的信息,因此无法解决此错误。

非常感谢您的帮助。

编辑:

共享模块:

@Module({
  providers: [
    CacheService,
    CodeGenService,
    IsUniqueEmail,
    BasicFileService,
  ],
  imports: [
    CacheModule.registerAsync({
      imports: [ConfigModule],
      useClass: CacheConfigService,
    }),
    UsersModule,
    AwsModule,
  ],
  exports: [
    CacheService,
    CodeGenService,
    IsUniqueEmail,
    BasicFileService,
  ],
})
export class SharedModule {}

您的 SharedModule 导入 UserModule,因此导入链(或至少我将在此处遵循的链)是 AppModule -> UsersModule -> CategoriesModule -> SharedModule -> UsersModule -> CategoriesMOdule -> SharedModule -> ...。为了解决这个问题,SharedModule 不应导入 UsersModule,或者您应该从 UserModule 转发引用 CategoriesModule,从 SharedModuleCategoriesModule 中的 SharedModule。这是我第一次看到几个模块深处的循环依赖,所以我无法给出如何使用 forwardRef 方法的确切语法。