Nest无法解析同一模块内的依赖关系?

时间:2018-11-30 18:40:23

标签: typescript dependencies nestjs

我有一个用Nest.js编写的后端。添加一些新服务后,在启动过程中出现此错误:

Error: Nest can't resolve dependencies of the SomeService1 (+, +, ?, +, +, +, +). Please verify whether [2] argument is available in the current context.
  • 问题是:该服务的参数[2]是另一个提供程序,位于同一模块中的
  • 我认为应用程序中没有循环依赖项。
  • 我写了一个快速脚本来生成依赖图,它确实没有循环。
  • 但是:如果我在所提到的注入参数@Inject(forwardRef(() => SomeService2)之前添加[2],该应用程序将神奇地开始工作...
  • 代码库中没有其他forwardRef

我现在该怎么做才能检查问题的根源? (比随机注释掉一些部门,看看是否可行;)我认为唯一的原因可能是:

  • 圆形部门
  • 使用exports:部分未列出的另一个模块中的提供程序
  • 使用模块的providers:部分中未列出的提供程序

以上都不适用于我的应用程序。还有什么其他原因?不幸的是,我无法发布资源,但是如果我知道要寻找的内容,我应该能够提供一些细节。


SomeService0的构造函数:

constructor(
    private readonly ...: OtherService1,
    private readonly reporter: EventReporter,
    // @Inject(forwardRef(() => SomeService2))  // works if I uncomment this!
    private readonly ...: SomeService2,
    private readonly ...: SomeService3,
    private readonly ...: EvenOtherService1,
    @Inject(eventBusProviderToken)
    eventBus: EventBus,
) {

带有名称的SomeModule声明的更改方式与上述构造函数相同:

@Module({
    imports: [
        OtherModule,
        EvenOtherModule,
        <...more imports>
    ],
    controllers: [
        SomeController,
    ],
    providers: [
        SomeService0,
        SomeService1,
        SomeService2,
        SomeService3,
        SomeService4,
    ],
    exports: [
        SomeService3,
    ],
})
export class SomeModule {}

0 个答案:

没有答案