Гнездо JS - Не удается разрешить очередь? - PullRequest
0 голосов
/ 13 марта 2020

Я следую do c, чтобы начать использовать очередь. Я установил @nestjs/bull, bull, @types/bull зависимости. А вот мой app.module.ts:

@Module({
    imports: [
        ConfigModule.forRoot({
            load: [configuration],
        }),
        BullModule.registerQueue({
            name: 'create_checkin',
            redis: {
                host: 'localhost',
                port: 6379,
            },
        }),
        EventModule,
    ],
})
export class AppModule {}

Я импортировал BullModule в модуль root. И вот мой event.service.ts:

@Injectable()
export class EventService {

    constructor(
        @InjectQueue('create_checkin') private readonly createCheckinQueue: Queue,
    ) {
    }
}

И когда я запускаю сервер, я получаю следующее сообщение об ошибке:

Nest can't resolve dependencies of the EventService
Please make sure that the argument BullQueue_create_checkin at index [0] is available in the EventModule context.

Я не знаю, какой шаг я сделал неправильно. Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Попробуйте импортировать BullModule прямо в Event Module - у меня была такая же проблема, и я сделал это так, чтобы он работал.

@Module({
  imports: [
    BullModule.registerQueueAsync({
      name: 'csv',
      useFactory: async (config: ConfigService) => ({
        redis: config.get('redis'),
      }),
      inject: [ConfigService],
    }),
  ],
  providers: [
    CsvService
  ],
  exports: [CsvService],
})
export class CsvModule {}

Я знаю, что это асинхронный метод c, но, возможно, вам стоит попробовать.

0 голосов
/ 16 марта 2020

Убедитесь, что вы помещаете EventService в массив провайдеров в EventModule.

@Module({
     providers: [EventService],
     controllers :[],
     imports: [YOUR_MODULES],
     exports: [EventService]
})
export class EventModule {}
...