【发布时间】:2020-09-09 04:26:56
【问题描述】:
我有一项服务可以毫无问题地注入其他组件。
当我尝试将该服务注入另一个服务时,我得到了
Error: Nest can't resolve dependencies of the AService (?).
Please make sure that the argument BService at index [0] is available in the AService context.
我找不到将服务相互注入的任何方法。这是不支持的,有点反模式....?
如果是这样,如何处理具有我希望在我的所有应用程序中的多个组件和服务中可用的功能的服务?
代码如下:
b.module.ts
import { Module } from '@nestjs/common';
import { BService } from './b.service';
@Module({
imports: [],
exports: [bService],
providers: [bService]
})
export class bModule { }
b.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class BService {
someFunc();
}
a.module.ts
import { Module } from '@nestjs/common';
import { SensorsService } from './a.service';
import { SensorsController } from './a.controller';
import { BModule } from '../shared/b.module';
@Module({
imports: [BModule],
providers: [AService],
controllers: [AController],
exports: []
})
export class AModule {
}
a.service.ts - 应该可以使用 b.service
import { Injectable } from '@nestjs/common';
import { BService } from '../shared/b.service';
@Injectable()
export class AService {
constructor(
private bService: BService
) {}
someOtherFunc() {}
}
【问题讨论】:
-
我注意到您在声明代码中的模块是
bModule,但是您正在导入BModule- 这是问题所在吗?与bService相同 -
JavaScript 区分大小写。确保您有适合您的类和实例的案例。另外,如果不是这样,您会展示这些如何绑定到您的
AppModule吗? -
@hlfrmn 我的模块当然还有其他名称。但是由于它在遍历代码后突然开始工作,我会认为它是这样的失败。
标签: typescript dependency-injection nestjs