Nest не может разрешить зависимости для экспортированной службы

#javascript #typescript #module #dependencies #nestjs

Вопрос:

Я пытаюсь экспортировать и импортировать услугу в NestJS. Это кажется простым, и я думал, что это должно работать так, но я получил сообщение об ошибке, в котором говорится, что Nest не может разрешить зависимости.

Модуль настроек

Этот модуль содержит службу, которую необходимо импортировать, и экспортирует ее.

 @Module({
  imports: [
    MongooseModule.forFeature([{ name: Setting.name, schema: SettingSchema }]),
  ],
  providers: [SettingsService],
  exports: [SettingsService],
})
export class SettingsModule {}
 

MsgraphМодуль

Этот модуль должен импортировать службу через модуль, потому что служба вводится в их службу.

 @Module({
  imports: [SettingsModule],
  providers: [MsgraphService],
})
export class MsgraphModule {}
 

Модуль приложения

 @Module({
  imports: [
    MongooseModule.forRoot('mongodb://localhost/lead-import', {
      useCreateIndex: true,
    }),
    MsgraphModule,
    SettingsModule,
    ...
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
 

Что я здесь делаю не так?

Комментарии:

1. Можете ли вы SettingsService также предоставить код?

Ответ №1:

Проблема заключалась в том, что я использовал декоратор @Inject (), который необходим только для пользовательских инъекций зависимостей.

 @Injectable()
export class MsgraphService {
  private client: Client;
  private authenticator;

  constructor(@Inject() private settingsService: SettingsService) {
    this.init();
    this.authenticator = new MSGraphAuthenticator();
  }

  ...
}
 

Так что удаление @Inject() сделало свое дело.