es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo manejar los errores en los filtros de excepción con Fastify NestJs?

Estoy utilizando el siguiente código para capturar errores en Fastify, sin embargo mi error es que “response.send” no es una función:

¿Cuál es la forma correcta de enviar el error en mis filtros de excepción globales utilizando esa estructura en Fastify?

“` lang-js

import {
ArgumentsHost,
Catch,
ExceptionFilter,
HttpException,
HttpStatus,
Injectable,
} from '@nestjs/common';
import dotenv from 'dotenv';
import { FastifyReply, FastifyRequest } from 'fastify';

@Catch()
@Injectable()
export class HttpExceptionFilter implements ExceptionFilter {

catch(exception: any, host: ArgumentsHost) {
const context = host.switchToHttp();
const response: FastifyReply<any> = context.getResponse<fastifyreply>();
const request: FastifyRequest = context.getRequest<fastifyrequest>();
let status =
exception instanceof HttpException
? exception.getStatus()
: HttpStatus.INTERNAL_SERVER_ERROR;

<pre><code>const message =
exception instanceof Error ? exception.message : exception.message.error;

response.send({"test":"test"})
</code></pre>

}

}
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para enviar el error en los filtros de excepción globales utilizando esta estructura en Fastify, puedes reemplazar la función response.send con response.send({error: message}). Esto enviará el mensaje de error contenido en la variable message como un objeto JSON con una clave llamada error. Por lo tanto, la función catch en la clase HttpExceptionFilter se vería así:

      catch(exception: any, host: ArgumentsHost) {
        const context = host.switchToHttp();
        const response: FastifyReply<any> = context.getResponse<fastifyreply>();
        const request: FastifyRequest = context.getRequest<fastifyrequest>();
        let status =
          exception instanceof HttpException
            ? exception.getStatus()
            : HttpStatus.INTERNAL_SERVER_ERROR;
    
        const message =
          exception instanceof Error ? exception.message : exception.message.error;
    
        response.send({error: message});
      }
    

    Esto enviará una respuesta JSON con el mensaje de error, lo que te permitirá manejar el error de manera adecuada.

Comments are closed.