Nest 无法解析的依赖项

Nest can't resolve dependencies of the

我正在尝试将 AuthService 用于 UsersService 并将 UsersService 用于 AuthService,因此这称为“循环依赖”。问题是“Nest 无法解析 AuthService 的依赖项(UserModel、JwtService、?)。请确保索引 [2] 处的参数依赖项在 AuthModule 上下文中可用。”

用户模块:

@Module({
  imports: [
    MongooseModule.forFeature([
      {
        name: User.name, schema: UserSchema
      }
    ]),
    forwardRef(() => AuthModule),
  ],
  controllers: [UsersController],
  providers: [UsersService], 
  exports: [UsersService]
}) 
export class UsersModule {}enter code here

AuthModule:

@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,
    ) {}
...

您已经解决了模块之间的循环依赖,但没有解决服务之间的问题。服务的每一端都需要 @Inject(forwardRef(() => InjectedClass))。所以你的 AuthService 会使用 @Inject(forwardRef(() => UserService))

循环依赖是不好的,试图使用其他答案中提到的 forwardRef 之类的东西来绕过它们不是好的做法。

研究服务间通信的其他模式。事件举例:https://docs.nestjs.com/techniques/events