当涉及来自不同兄弟的不同服务时,Nest 无法解决服务依赖关系

Posted

技术标签:

【中文标题】当涉及来自不同兄弟的不同服务时,Nest 无法解决服务依赖关系【英文标题】:Nest can't resolve service dependencies when it's about a different service from a different brother 【发布时间】:2020-11-16 00:53:14 【问题描述】:

我是 NestJS 的新手,当我尝试从 AppModule 中声明的模块注入服务时遇到问题,同时将另一个服务声明到 AppModule 中的另一个模块中。

例如:


**app.module.ts**
  imports: [
    CoreModule,

    ProductsModule,
  ],
  controllers: [
    AppController,
  ],
  providers: [
    AppService,
  ],
**core.module.ts**

 imports: [
  ],
  controllers: [
    BrandsController,
    CategoriesController,
    ReviewsController,
  ],
  providers: [
    BrandsService,
    CategoriesService,
    ReviewsService,
  ],
  exports: [
    ReviewsService,
  ]

由于我需要 core.module.ts 中的控制器,我不得不将其注入 app.modules.ts。

同时,我需要这个模块中的一些服务和控制器,将它们注入到 products.module.ts 中。

**products.module.ts**

imports: [
  ...
  ],
  providers: [
    ProductsService,
  ],
  controllers: [
    ProductsController,
  ]

现在我的问题是:

Nest 无法解析 ProductsService (?, ReviewsService) 的依赖关系。请确保索引 [0] 处的参数 ProductModel 在 ProductModule 上下文中可用。

【问题讨论】:

你能显示你的ProductService的构造函数吗? 您提供的答案应该已添加到问题中,而不是作为答案。此外,这与您给出的错误不符。根据您的错误,您的 ProductsService 应该有两个依赖项,但这只有一个。你的ProductsModuleimports 数组中有MongooseModule.forFeature() 吗? 【参考方案1】:

这里是 products.service.ts 的构造函数:

constructor(
    @InjectModel('Product') 
    private readonly productModel: Model<IProductSchema>,
  )  ```

I am using MongoDB and mongoose schema for collections.

【讨论】:

以上是关于当涉及来自不同兄弟的不同服务时,Nest 无法解决服务依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

使用 Nest 设置两个不同的静态文件夹

Nest 在测试期间无法解析 UserService 的依赖关系

父进程无法读取来自 C 中 4 个不同管道的所有消息

来自不同组件的 React + Material-UI 样式类在静态服务时发生冲突

无法连接到数据库 - NEST.JS 和 TypeORM

GCM 多设备令牌