Unable to catch event in NestJs

Viewed 1873

I'm doing some test with NestJs events. Here is the code (very basic)

import { Body, Controller, Post } from '@nestjs/common';
import { OnEvent, EventEmitter2 } from '@nestjs/event-emitter';

@Controller('messages')
export class MessagesController {
  constructor(private eventEmitter: EventEmitter2) {}

  @Post()
  async postMessage(@Body() message: any) {
    this.eventEmitter.emit('custom.event', { data: message });
  }

  @OnEvent('custom.event', { async: true })
  handleEvent(payload: any) {
    console.log(payload);
  }
}

I imported module in AppModule like that

EventEmitterModule.forRoot({
      wildcard: true,
      delimiter: '.',
    }),

When I perform POST request, event is not catch by the listener. What did I missed ?

1 Answers

Looking at the source code it appears that Controllers are not scanned when connecting subscribers.

Only Providers are scanned which means you will need to create a dedicated Injectable Service to have your @OnEvent method decorated

Related