Skip to content

Latest commit

 

History

History
67 lines (50 loc) · 2.04 KB

README.md

File metadata and controls

67 lines (50 loc) · 2.04 KB

Nest.js exceptions

Provides Nest.js custom exceptions and exception filters.

Installation

$ npm i nestjs-exceptions

Usage

Nest.js compatibility matrix

Nest.js version nestjs-exceptions compatible version
8.x.x 8.x.x
7.x.x 7.x.x

Integration Error

You might want to use IntegrationError to wrap integration errors with a custom message.

throw new IntegrationError(`Service runtime error.`, causeError);

Bootstrap with global exception filter

const bootstrap = async () => {
    const app = await NestFactory.create(AppModule);
    app.useGlobalFilters(new GlobalExceptionFilter());
    ...
    await app.listen(3000);
};
bootstrap();

GlobalExceptionFilter takes care mainly of internal server errors. You can configure it during instantiation so that the original cause of 500 errors are returned back to the client. The default is false for security reasons.

const sendInternalServerErrorCause = true;
new GlobalExceptionFilter(sendInternalServerErrorCause);

GlobalExceptionFilter logging setup

By default, only 500 errors are logged in the server side. This can avoid performance issues or Denial of Service attacks because the server is being to much verbose logging.

Anyways, for development reasons or debugging it's possible to log all errors:

const sendInternalServerErrorCause = false;
const logAllErrors = true;
new GlobalExceptionFilter(sendInternalServerErrorCause, logAllErrors);

Or log only specific errors (besides 500):

const sendInternalServerErrorCause = false;
const logAllErrors = false;
const logErrorsWithStatusCode = [400, 401];
new GlobalExceptionFilter(sendInternalServerErrorCause, logAllErrors, logErrorsWithStatusCode);