首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nest无法解析

Nest无法解析
EN

Stack Overflow用户
提问于 2021-05-07 21:30:17
回答 2查看 1.7K关注 0票数 3

我试图在UsersService中使用UsersService,在AuthService中使用UsersService,因此这被称为“循环依赖”。问题是"Nest无法解决AuthService (UserModel,JwtService,?)的依赖关系。请确保索引2中的参数依赖在AuthModule上下文中可用。“

UsersModule:

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

AuthModule:

代码语言:javascript
复制
@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 (工作正常):

代码语言:javascript
复制
@Injectable()
export class UsersService {
  constructor(
      @InjectModel(User.name) private userModel: Model<UserDocument>,
      private jwtService: JwtService,
      private authService: AuthService
    ) {}
...

AuthService (发生错误的地方):

代码语言:javascript
复制
@Injectable()
export class AuthService {
  constructor(
      @InjectModel(User.name) private userModel: Model<UserDocument>, 
      private jwtService: JwtService,
      private userService: UsersService,
    ) {}
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-08 00:44:05

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

票数 1
EN

Stack Overflow用户

发布于 2021-07-20 16:53:26

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67441883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档