gpt4 book ai didi

javascript - 尝试使用 nestjs 将服务注入(inject)另一个服务时出现问题

转载 作者:行者123 更新时间:2023-11-30 19:23:10 25 4
gpt4 key购买 nike

我遇到了一个问题。我有这个示例存储库:https://github.com/pillowslept/nest-example

我想将 RaceService 注入(inject)到 HeroService 中,因为我想使用一些方法,例如 getById

我遵循此处描述的文档:https://docs.nestjs.com/modules

问题发生在我接下来做的时候:

RaceModule 我添加了 RaceService 作为导出:

@Module({
imports: [TypeOrmModule.forFeature([RaceEntity])],
controllers: [RaceController],
providers: [RaceService],
exports: [RaceService],
})

HeroModule 我导入了 RaceModule:

@Module({
imports: [RaceModule, TypeOrmModule.forFeature([HeroEntity])],
controllers: [HeroController],
providers: [HeroService],
})

HeroService 我为 RaceService 添加了注入(inject):

constructor(
@InjectRepository(HeroEntity)
private heroRepository: Repository<HeroEntity>,
private readonly raceService: RaceService,
) {
}

错误出现在控制台:

Error: Nest cannot create the module instance. Often, this is because of a circular dependency between modules. Use forwardRef() to avoid it

我尝试了不同的方法来导入服务,包括创建一个新的 CommonsModule,还将 forwardRef 放入 raceService 定义中,但出现另一个错误:

Nest can't resolve dependencies of the HeroService (HeroEntityRepository, ?). Please make sure that the argument at index [1] is available in the HeroModule context.

感谢您的帮助!

最佳答案

在一些帮助下,我意识到我的问题出现是因为我在模块文件夹中创建了一个文件 index.ts(想立即导出模块名称),如下所示:

export { RaceModule } from './race.module';
... others

那么,当我尝试在 HeroModule 中导入 RaceModule 时,如下所示:

import { RaceModule } from 'modules';

我的问题出现了。

我不知道为什么,而是直接从 index.ts 文件引用模块导入,而不是:

import { RaceModule } from 'modules/race.module';

是我代码的问题。

因此,根据一些建议,我创建了一些文件夹并移动了一些文件,我的项目开始正常运行。

感谢您的帮助,希望有人觉得这有帮助。

关于javascript - 尝试使用 nestjs 将服务注入(inject)另一个服务时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57229007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com