繁体   English   中英

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

授权模块:

@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 {}

用户服务(工作正常):

@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM