Provides Nest.js custom exceptions and exception filters.
$ npm i nestjs-exceptions
Nest.js version | nestjs-exceptions compatible version |
---|---|
8.x.x | 8.x.x |
7.x.x | 7.x.x |
You might want to use IntegrationError
to wrap integration errors with a custom message.
throw new IntegrationError(`Service runtime error.`, causeError);
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);
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);