node.js - nestjs中模块之间的循环依赖

标签 node.js module nestjs circular-dependency

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

关于node.js - nestjs中模块之间的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62958969/

相关文章:

javascript - 为什么我的 Node.js 内存使用基准看起来是错误的?

Python 导入机制

Java + Node 模块

nestjs - 如何在 e2e 测试期间应用 Global Pipes

node.js - npm start 命令给出错误 : http-server:command not found , 代码:ELIFECYCLE

javascript - 如何在ejs模板中使用if条件

android - 错误 :Execution failed for task ':app:dexDebug' when importing ParseUI-widget and Login as modules

javascript - 如何在nestjs中执行嵌套路由?

NestJs/类型ORM : How to save Many to Many

mysql - 如何在 Electron 中实现一个 promise-mysql 连接池