web-dev-qa-db-fra.com

Injecter le service nestjs à partir d'un autre module

J'ai un PlayersModule et un ItemsModule.

Je veux utiliser le ItemsService dans le PlayersService.

Quand je l'ajoute par injection:

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){}

Je reçois cette erreur d'imbrication:

[Nest] 11592 - 2018-8-13 11:42:17 [ExceptionHandler] Nest ne peut pas résoudre les dépendances du PlayersService (+,?). Veuillez vous assurer que l'argument de l'index [1] est disponible dans le contexte actuel.

Les deux modules sont importés dans le app.module.ts. Les deux services fonctionnent seuls dans leur module.

16
Fairydhwen

Vous devez exporter le ItemsService dans le module qui le fournit:

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

puis importez-le dans le module qui utilise le service:

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

Je crois que vous avez fait face au même problème que moi. Mon scénario était 2 modules personnalisés frères (utilisateur, auth) qui devaient utiliser les services de l'autre. J'ai utilisé DI circulaire pour le résoudre. veuillez vérifier cela lien

Faites-moi savoir si, si cela a résolu votre problème, je pourrais peut-être vous conseiller davantage.

0
Eyal Israel