-
NestJS event-emitter 사용시 런타임 에러 발생시 서버 중단 현상 최근에 패치됨Nest.js 2024. 8. 31. 20:45728x90
해당 이슈를 확인 해보면 수정 된것을 알 수 있다.
- ( https://github.com/nestjs/event-emitter/pull/936/commits/e322cb820f528640545e2e5685bdb141bfdc9142 )
- ( https://github.com/nestjs/event-emitter/releases/tag/2.0.2 )
버전 릴리즈를 살펴보면 해당 936 Pr이 2.0.2에 반영된것을 알 수있다.
그렇기 때문에 @nestjs/event-emitter 사용시 >=2.0.2 로 버전업 되어 있는지 체크하고 사용해야 한다.2.0.2 이전버전을 사용하게 된다면
@OnEvent('event.fired', { async: true }) public async handleEvent(event: Event) { throw new Error('Event Error Fired!') }
// on-safe-event.decorator.ts import { applyDecorators, Logger } from '@nestjs/common' import { OnEvent, OnEventType } from '@nestjs/event-emitter' import { OnEventOptions } from '@nestjs/event-emitter/dist/interfaces' function _OnSafeEvent() { return function (target: any, key: string, descriptor: PropertyDescriptor) { const originalMethod = descriptor.value const metaKeys = Reflect.getOwnMetadataKeys(descriptor.value) const metas = metaKeys.map((key) => [key, Reflect.getMetadata(key, descriptor.value)]) descriptor.value = async function (...args: any[]) { try { await originalMethod.call(this, ...args) } catch (err) { Logger.error(err, err.stack, 'OnSafeEvent') } } metas.forEach(([k, v]) => Reflect.defineMetadata(k, v, descriptor.value)) } } export function OnSafeEvent(event: OnEventType, options?: OnEventOptions | undefined) { return applyDecorators(OnEvent(event, options), _OnSafeEvent()) }
@OnSafeEvent('event.fired', { async: true }) async handleEvent(event: Event) { throw new Error('Event Error Fired!') } @Timeout(3000) async handleTimeout() { this.eventEmitter.emit('event.fired') } @Timeout(4000) async handleTimeout2() { this.eventEmitter.emit('event.fired') }
이러한 Event 데코레이터를 수정 해주어야 한다.
Reference
728x90'Nest.js' 카테고리의 다른 글
prisma에서는 비관적 락(Pessimistic Lock)을 지원하지 않는다. (0) 2024.10.23 NestJS에서 쿼리빌더의 결과 객체들을 병합하는 방법 with es-toolkit (0) 2024.10.21 catch 할 수 없는 에러들을 slack 웹훅을 통해 slack 실시간 알림 보내기 (0) 2024.08.16 NestJS에서 Decorator(데코레이터) (0) 2024.08.14 NestJS 꼭 알아야 되는 Exception filter 주의점 (0) 2024.08.14