繁体   English   中英

我在从 NestJS 上已导入的模块导入服务时遇到问题

[英]I'm having trouble importing a service from an already imported module on NestJS

好的,我会尽量把我的问题说清楚。 到目前为止,我的模块结构与此类似:

OrderProductUnit 包含模块 OrderProductUnitStatus 和 OrderProductUnitNotes。

从 OrderProductUnitNotes 的服务中,我想导入 OrderProductUnitStatus 的服务。 我已经从 OrderProductUnitNotes 的服务中导入了 OrderProductUnitStatus 的存储库,它工作得很好。 但是当我尝试导入服务时,NestJS 会抛出这个错误:

Nest can't resolve dependencies of the OrderProductUnitNotesService (OrderProductUnitNoteRepository, OrderProductUnitStatusRepository, ?). Please make sure that the argument dependency at index [2] is available in the OrderProductUnitsModule context.

我尝试过明确导入 OrderProductUnitStatusService,但似乎没有什么不同。 我试过使用@Inject('OrderProductUnitStatusService') 方法,但是当我尝试这个嵌套似乎挂起并且没有加载所有模块时,使得 API 没有响应,就好像它完全关闭了一样。

我决定将 OrderProductUnitStatus 和 OrderProductUnitNotes 这两个模块分组到 OrderProductUnit 模块中,因为它们是直接连接的,所以对我来说,Notes 和 Status 都是 OrderProductUnit 的子级非常有意义。 但我开始重新考虑这个决定,如果有人能告诉我这种方法是否是一个好的决定,我将不胜感激。

在这一点上,我真的不知道还能尝试什么,所以欢迎提出任何建议。 另外,如果需要任何其他信息,请告诉我,因为模块之间的关系可能有点混乱,因为它们是嵌套的。

我在 Discord 上回答了这个问题,但最好有信息,错误表明您的服务之间存在循环文件导入。 当 Nest 提到它找不到dependency项而不是注入令牌的名称(通常是类名)时,这意味着 Typescript 无法正确解析 class。 移除这种循环依赖当然是最好的选择,但如果不可能的话,你可以在构造函数中使用@Inject(forwardRef(() => InjectedClass))来懒惰地设置注入令牌以供 Nest 解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM