Node.js 巢罐';t解析
我正在尝试将AuthService用于UsersService,并将UsersService用于AuthService,因此这称为“循环依赖”。问题是“Nest无法解析AuthService(UserModel,JwtService,?)的依赖关系。请确保索引[2]处的参数依赖关系在AuthModule上下文中可用。” 用户模块:Node.js 巢罐';t解析,node.js,angular,typescript,dependency-injection,nestjs,Node.js,Angular,Typescript,Dependency Injection,Nestjs,我正在尝试将AuthService用于UsersService,并将UsersService用于AuthService,因此这称为“循环依赖”。问题是“Nest无法解析AuthService(UserModel,JwtService,?)的依赖关系。请确保索引[2]处的参数依赖关系在AuthModule上下文中可用。” 用户模块: @Module({ imports: [ MongooseModule.forFeature([ { name: User.n
@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()
导出类用户服务{
建造师(
@InjectModel(User.name)私有userModel:Model,
专用jwtService:jwtService,
私有authService:authService
) {}
...
AuthService(发生错误的位置):
@Injectable()
导出类身份验证服务{
建造师(
@InjectModel(User.name)私有userModel:Model,
专用jwtService:jwtService,
私有用户服务:用户服务,
) {}
...
您已经解决了模块之间的循环依赖关系,而不是服务之间的循环依赖关系。服务的每一方都需要@Inject(forwardRef(()=>InjectedClass))
。因此您的AuthService
将使用@Inject(forwardRef(()=>UserService))
<
@Injectable()
export class UsersService {
constructor(
@InjectModel(User.name) private userModel: Model<UserDocument>,
private jwtService: JwtService,
private authService: AuthService
) {}
...
@Injectable()
export class AuthService {
constructor(
@InjectModel(User.name) private userModel: Model<UserDocument>,
private jwtService: JwtService,
private userService: UsersService,
) {}
...