Express 如何解决nest js中的循环依赖关系?

Express 如何解决nest js中的循环依赖关系?,express,dependency-injection,nestjs,Express,Dependency Injection,Nestjs,我有导入UserModule和AuthModule的app.module @Module({ imports: [UserModule, AuthModule], controllers: [AppController], providers: [AppService], }) export class AppModule {} 以下是我的AuthModule的外观: @Module({ imports: [forwardRef(() => UserModule)],

我有导入UserModule和AuthModule的app.module

@Module({
  imports: [UserModule, AuthModule],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
以下是我的AuthModule的外观:

@Module({
  imports: [forwardRef(() => UserModule)],
  controllers: [AuthController],
  providers: [AuthService, UserService],
  exports: [AuthModule],
})
export class AuthModule {}
和用户模块:

@Module({
  imports: [TypeOrmModule.forFeature([User])],
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}

我在AuthService中注入userService。如果我从AppModule中删除AuthModule,依赖关系就会消失,因此,问题可能就在那里。

首先,配置用户模块和auth模块,以便它们可以相互引用

@Module({
  imports: [
    forwardRef(() => UserModule),
  ],
  exports: [AuthService],
  controllers: [AuthController],
  providers: [AuthService],
})
export class AuthModule {}

@Module({
  imports: [
    forwardRef(() => AuthModule),
  ],
  exports: [UserService],
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}
在这种情况下,还必须配置两个执行依赖项注入的不同服务,以便能够进行交叉引用

@Injectable()
export class UserService {
  constructor(
    @Inject(forwardRef(() => AuthService))
  )
}

@Injectable()
export class AuthService {
  constructor(
    @Inject(forwardRef(() => UserService))
  )
}

如果它不起作用,请尝试并发表评论。

如果您在
AuthService
中注入
UserService
,为什么不导出它<代码>导出:[UserService](在
UserModule
)@MicaelLevi,是的,我通过尝试随机组合导入和导出解决了这个问题。谢谢,现在我知道它是如何工作的,为什么工作。我已经解决了我的问题,但我尝试了这种方法,但没有成功。问题是这些模块也可能导入到AppModule中。