官方文档不清楚 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]
这里是错误信息中提到的所有模块的导入部分。
应用模块:
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
,或者您应该转发引用 CategoriesModule
来自 UserModule
, UserModule
来自 SharedModule
和 SharedModule
来自 CategoriesModule
.这是我第一次看到几个模块深处的循环依赖,所以我无法给出如何使用 forwardRef
的确切语法。方法。
关于node.js - nestjs中模块之间的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62958969/