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
我正在尝试将 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