嗨,伙计们,我在nestjs上得到了循环依赖错误,我尝试使用forwardref
,但这对我没有帮助
// AuthModule
@Module({
imports: [
forwardRef(() => UserModule),
JwtModule.register({
global: true,
secret: process.env.TOKEN_SECRET,
signOptions: { expiresIn: process.env.TOKEN_DURATION },
}),
],
providers: [AuthService, AuthGuard],
controllers: [AuthController],
exports: [AuthService],
})
export class AuthModule {}
// UserModule
@Module({
imports: [forwardRef(() => AuthModule)],
controllers: [UserController],
providers: [UserService],
exports: [UserService],
})
export class UserModule {}
在服务中,我正在访问其他服务,如下所示
private readonly authService: AuthService,
== CMD ERROR == [Nest] 2788 - 06/10/2023,12:56:50 PM LOG [InjectorLogger] Nest遇到未定义的依赖项。这可能是由于循环导入或缺少依赖项声明。[Nest] 2788 - 06/10/2023,12:56:50 PM ERROR [ExceptionHandler] Nest无法解析UserService(PrismaService,?,CONFIGURATION(app))。请确保索引[1]处的参数依赖关系在UserModule上下文中可用。
可能的解决方案:
- UserModule是有效的NestJS模块吗?
- 如果dependency是一个provider,它是当前UserModule的一部分吗?
- 如果依赖项是从单独的@Module导出的,那么该模块是否在UserModule中导入?
@Module({
imports: [ /* the Module containing dependency */ ]
})
为什么我有循环依赖!!
3条答案
按热度按时间qojgxg4l1#
解决方案是在构造函数中使用@Inject()(我在哪里导入服务),您可以在文档中看到更多内容
eoxn13cs2#
这个答案不能帮助您解决问题,但可以让您更好地了解模块间的连接
您可以集成nestjs-spelunker
bkhjykvo3#
尽量避免从其他服务调用服务。遵循减少模块间连接的路径