我有一个用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 {}