Внедрение услуги nestjs из другого модуля

У меня есть PlayersModule и ItemsModule.

Я хочу использовать ItemsService в PlayersService.

Когда я добавляю его путем инъекции:

import { Injectable } from '@nestjs/common';
import { InjectModel } from 'nestjs-typegoose';
import { ModelType, Ref } from 'typegoose';
import { Player } from './player.model';
import { Item } from '../items/item.model';
import { ItemsService } from '../items/items.service';

@Injectable()
export class PlayersService {
    constructor(
        @InjectModel(Player) private readonly playerModel: ModelType<Player>,
        private readonly itemsService: ItemsService){}

Я получаю эту ошибку гнезда:

[Nest] 11592 - 2018-8-13 11:42:17 [ExceptionHandler] Гнездо не может разрешать зависимости PlayersService (+,?). Убедитесь, что аргумент в индексе [1] доступен в текущем контексте.

Оба модуля импортируются в app.module.ts. Обе службы работают самостоятельно в своем модуле.

Ответы

Ответ 1

Вы должны экспортировать ItemsService в модуль, который его предоставляет:

@Module({
  controllers: [ItemsController],
  providers: [ItemsService],
  exports: [ItemsService]
  ^^^^^^^^^^^^^^^^^^^^^^^
})
export class ItemsModule {}

а затем импортировать его в модуль, который использует эту службу:

@Module({
  controllers: [PlayersController],
  providers: [PlayersService],
  imports: [ItemsModule]
  ^^^^^^^^^^^^^^^^^^^^^^
})
export class PlayersModule {}

Ответ 2

Я считаю, что вы столкнулись с той же проблемой, что и я. Мой сценарий состоял из двух родственных пользовательских модулей (user, auth), которые должны были использовать службы друг друга. Я использовал круговой DI, чтобы решить это. проверьте эту ссылку

Дайте мне знать, если это решит вашу проблему, может быть, я могу посоветовать вам дальше.