NestJS同模块下Resolver无法依赖注入已注册Service问题求助
问题根源
你对Nest模块的元数据字段用途配置错误是导致依赖注入失败的核心原因:AuthResolver作为当前Auth模块内部的GraphQL解析类,被错误放置在了@Module的imports数组中。
规则说明
Nest的@Module装饰器各字段有严格的用途边界:
imports字段仅用于导入其他封装好的Nest模块,不能放置当前模块自身的Resolver、Service、Controller等业务类- 所有需要Nest依赖注入容器管理的类(包括Service、Resolver、自定义提供者等),都需要放在当前模块的
providers数组中,才能在同一个模块上下文内完成依赖注入
修正方案
- 修正
auth.module.ts的配置:
@Module({ providers: [AuthService, AuthResolver], }) export class AuthModule {}
- 可选同步修正
app.module.ts的错误配置(你当前也将AppResolver错误放在了imports数组中,后续也可能触发同类依赖注入错误):
@Module({ imports: [ MercuriusModule.forRoot({ autoSchemaFile: true, graphiql: 'playground' }), AuthModule, ], controllers: [AppController], providers: [AppService, AppResolver], }) export class AppModule {}
修正后重启服务即可完成AuthService到AuthResolver的正常注入。
内容的提问来源于stack exchange,提问作者Isak
相关产品推荐
相关产品推荐

