[英]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.