Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@schibsted/middy-error-handler

Package Overview
Dependencies
Maintainers
5
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@schibsted/middy-error-handler

Middy middleware for adding caching headers to success response and errors

  • 4.2.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.6K
decreased by-15.95%
Maintainers
5
Weekly downloads
 
Created
Source

Schibsted Middy error handler middleware

github checks current version @ npm weekly downloads @ npm minified size

HTTP error handler middleware for the middy framework, the stylish Node.js middleware engine for AWS Lambda

Automatically handles any uncaught errors and creates a proper HTTP response for them (using the message and the status code provided by the error object). We recommend generating these HTTP errors with the npm module http-errors.

This middleware should be set as the last error handler unless you also want to register the http-reponse-serializer. If so, this middleware should come second-last and the http-response-serializer should come last.

This is an alternative to standard Middy error handler with the following differences:

  • it always returns JSON object and not text
  • it handles any uncaught error, not just the ones with statusCode and message

Install

To install this middleware you can use NPM:

npm install --save @schibsted/middy-error-handler

Options

  • logger (defaults to console) - a logging function that is invoked with the current error as an argument. You can pass false if you don't want the logging to happen.
  • level (defaults to error) - log level to use for the error log entry
  • exposeStackTrace (defaults to false) - if true, the stack trace will be exposed in the response body
  • filter (function, defaults to always returning true) - a function that is invoked with the current error as an argument. If it returns true, the error is logged and its stack trace returned as long as exposeStackTrace is also true, otherwise it is not.

Sample usage

with mostly default params

const middy = require('@middy/core');
const createError = require('http-errors');
const errorHandler = require('@schibsted/middy-error-handler');

const handler = middy(() => {
    throw new createError.ServiceUnavailable('Service not available');
});

handler.use(errorHandler({exposeStackTrace: true}));

handler({}, {}).then((response) => {
    console.log(response);

    // {
    //     statusCode: 503,
    //     body: '{"statusCode":503,"message":"Service not available","stack":"..."}'
    //     stack: '...'
    // }
});

with custom logger and filtering out 404 errors

const middy = require('@middy/core');
const createError = require('http-errors');
const errorHandler = require('@schibsted/middy-error-handler');
const { LambdaLog } = require('lambda-log');

const logger = new LambdaLog({
    tags: ['foobar'],
});

const handler = middy(() => {
    throw new createError.ServiceUnavailable('Service not available');
});

handler.use(errorHandler({ 
    filter: (err) => err.statusCode !== 404, // don't log 404 errors, they happen a lot
    logger 
}));

handler({}, {}).then((response) => {
    // same + also executes logger.error function

    console.log(response);

    // {
    //     statusCode: 503,
    //     body: '{"statusCode":503,"message":"Service not available","stack":"..."}'
    //     stack: '...'
    // }
});

Contributing

Everyone is very welcome to contribute to this repository. Feel free to raise issues or to submit Pull Requests.

Keywords

FAQs

Package last updated on 29 Aug 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc