node.js - 其他服务中的 @Inject 服务 - Nest 无法解析依赖项

标签 node.js dependency-injection dao nestjs

我正在尝试将两个服务@Inject到NestJS服务中并得到

Nest can't resolve dependencies of the MainServiceImpl (?, Symbol(MainDao)). Please make sure that the argument at index [0] is available in the MainModule context

这是服务:

@Injectable()
export class MainServiceImpl implements MainService {

    constructor(
        @Inject(TYPES.PublishSubscriptionService) private publishSubscriptionService: PublishSubscriptionService,
        @Inject(TYPES.MainDao) private mainDao: MainDao
    ) {}

现在,如果我切换顺序,则始终是第二个注入(inject)的服务收到错误。

TYPES 是 Symbols 的对象

const TYPES = {
    PublishSubscriptionService: Symbol('PublishSubscriptionService'),
    MainDao: Symbol('MainDao'),
};
export default TYPES;

这是使用桶装的index.ts

// start:ng42.barrel
export * from './main.dao.mongo-impl';
export * from './main.dao';
export * from './main';
export * from './main.schema';
export * from './main.service.impl';
export * from './main.service';
// end:ng42.barrel

我错过了什么?

Closed NestJS issue with no resolution
NestJS doc on @Global modules

最佳答案

如果没有看到您的 MainServieImplModule 或包含此服务的任何调用的模块,我无法确定,但如果我不得不猜测,您没有声明您的 providers code> 为这两个服务正确嵌套。您需要像这样创建一个自定义提供程序

@Module({
  provides: [
    {
      provide: TYPES.PublishSubscriptionService,
      useClass: PublishSubscriptionService,
    },
    {
      provide: TYPES.MainDao,
      useClass: MainDao
    },
    MainServiceImpl
  ]
})
export class MainServiceImplModule {}

但是,如果这些提供程序是不同模块的一部分,您将需要确保提供程序是自定义的(如上所述),但也可以导出,以便可以在不同的模块中导入和使用它们。如果没有看到更多代码,就无法回答这个问题,但我认为这应该为您提供所需的方向。如果没有,请编辑您的问题并添加更多信息。

关于node.js - 其他服务中的 @Inject 服务 - Nest 无法解析依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58150967/

相关文章:

node.js - 我无法通过 "create-react-app"创建 React 应用程序

javascript - 返回一个使用嵌套 Promise 构建的对象

node.js - 从 nodejs 到 https url 的 Rest API,端口 8443 抛出错误

c# - 在 Ninject 中寻找通用接口(interface)的具体实现

Spring @Transactional 包装 2 种方法

javascript - 让 HTML 表单使用 JSON API

javascript - NestJS - 注入(inject)的服务在构造函数中未定义

.net - IoC - 对象实例的动态组合

hibernate - ORM 和 DAO - 设计问题

Java网络服务: use MVC or DAO+managers