【发布时间】:2019-10-09 05:37:10
【问题描述】:
我正在尝试将两个服务@Inject 到一个 NestJS 服务中并且得到了
Nest 无法解析 MainServiceImpl (?, 符号(MainDao))。请确保索引 [0] 处的参数是 在 MainModule 上下文中可用
这里是服务:
@Injectable()
export class MainServiceImpl implements MainService {
constructor(
@Inject(TYPES.PublishSubscriptionService) private publishSubscriptionService: PublishSubscriptionService,
@Inject(TYPES.MainDao) private mainDao: MainDao
) {}
现在,如果我切换顺序,总是第二个注入的服务得到错误。
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
【问题讨论】:
-
您是否创建了自定义提供程序以也使用符号?如果是这样,该自定义提供程序是否与您当前尝试使用的服务模块处于同一上下文中?
-
这听起来可能是 index.ts 问题。你在用桶文件吗?如果是这样,您需要显示更多代码以帮助查明问题。
-
这很有趣@raychz,我已经为这个模块添加了索引文件,但无法理解它是如何参与的。
标签: node.js dependency-injection dao nestjs