Express 如何解决nest js中的循环依赖关系?
我有导入UserModule和AuthModule的app.moduleExpress 如何解决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)],
@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中。