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
,从 SharedModule
和 CategoriesModule
中的 SharedModule
。这是我第一次看到几个模块深处的循环依赖,所以我无法给出如何使用 forwardRef
方法的确切语法。
官方文档不清楚 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
,从 SharedModule
和 CategoriesModule
中的 SharedModule
。这是我第一次看到几个模块深处的循环依赖,所以我无法给出如何使用 forwardRef
方法的确切语法。