javascript - Nest kan inte lösa beroenden till exporterad tjänst


Jag försöker exportera och importera en tjänst i NestJS. Det verkar enkelt och jag trodde att det skulle fungera så här, men jag fick ett fel som säger att Nest inte kan lösa beroenden.

Inställningsmodul

Den här modulen har tjänsten som bör importeras, och exporterar den.

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

MsgraphModule

Denna modul bör importera tjänsten genom modulen eftersom tjänsten injiceras i deras tjänst.

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

AppModul

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

Vad gör jag för fel här?

Svar #1

Problemet var att jag använde @Inject()-dekorationen som bara behövs för anpassade beroendeinjektioner.

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

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

  ...
}

Så att ta bort @Inject() gjorde susen.