我在从 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无法正确解析类。删除这种循环依赖当然是最好的选择,但如果不可能,您可以在构造函数中使用@Inject(forwardRef(() => InjectedClass))来延迟设置Nest要解析的注入令牌。

最新更新