我试图在UsersService中使用UsersService,在AuthService中使用UsersService,因此这被称为“循环依赖”。问题是"Nest无法解决AuthService (UserModel,JwtService,?)的依赖关系。请确保索引2中的参数依赖在AuthModule上下文中可用。“
UsersModule:
@Module({
imports: [
MongooseModule.forFeature([
{
name: User.name, schema: UserSchema
}
]),
forwardRef(() => AuthModule),
],
controllers: [UsersController],
providers: [UsersService],
exports: [UsersService]
})
export class UsersModule {}enter code hereAuthModule:
@Module({
imports: [
MongooseModule.forFeature([{name: User.name, schema: UserSchema}]),
JwtModule.register({ secret: process.env.JWT_SECRET }),
forwardRef(() => UsersModule),
],
controllers: [AuthController],
providers: [AuthService, JwtStrategy],
exports: [AuthService, JwtModule]
})
export class AuthModule {}UsersService (工作正常):
@Injectable()
export class UsersService {
constructor(
@InjectModel(User.name) private userModel: Model<UserDocument>,
private jwtService: JwtService,
private authService: AuthService
) {}
...AuthService (发生错误的地方):
@Injectable()
export class AuthService {
constructor(
@InjectModel(User.name) private userModel: Model<UserDocument>,
private jwtService: JwtService,
private userService: UsersService,
) {}
...发布于 2021-05-08 00:44:05
您已经解决了模块之间的循环依赖,而不是服务之间的循环依赖。服务的每一方都需要@Inject(forwardRef(() => InjectedClass))。所以你的AuthService会使用@Inject(forwardRef(() => UserService))
发布于 2021-07-20 16:53:26
循环依赖是不好的,试图使用其他答案中提到的forwardRef之类的东西来绕过它们并不是一个好的实践。
研究服务间通信的其他模式。事件,例如:https://docs.nestjs.com/techniques/events
https://stackoverflow.com/questions/67441883
复制相似问题