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

response-catcher

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

response-catcher

Easy async error handling in Express

  • 0.2.8
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

response-catcher npm

Easy async error handling in Express

npm install --save response-catcher

Introduction

response-catcher is an extremely flexible .catch() error handler for promise-based express request flows.

It should be used where you would have multiple .then() operations in a request and need to be able to throw and handle many kinds of errors.

By default it attaches itself to res.error() (though this can be configured).

Usage example

const express = require("express");
const app = express();

const responseCatcher = require("response-catcher");
app.use(responseCatcher());

app.get("/", (req, res) => {
	findUser()
		.then(checkUser)
		.then(andThenThisThing)
		.catch(res.error());

	async function findUser() {
		let user = await db.users.find(req.body.id);
		if (!user) throw 404;

		return user;
	}

	async function checkUser(user) {
		if (!user.isAuthenticated) throw [401, "User is not authenticated"];
		else if (user.alreadyExists) throw ["User already exists", 409];
		else if (user.username.length > 8) throw "Username is too long";
		else if (serverErrorSomewhere) throw { status: 500, body: "Sorry, we had an error somewhere!" };
	}

	async function andThenThisThing() {
		// ...
	}
});

Configuration

Instantiation

On instantiation of the middleware function, you can set the following properties (with the listed values being the defaults):

{
	name: "error", // The name of the function to use: "res.error()"
	status: 400, // The default response status to use
	logger: console.log, // The logging function to use for errors
	logging: false // Whether or not to log errors
}

To use a custom logger that isn't console.log, supply it to the logger key. This still won't enable logging, which to do set logging: true.

You can supply as many arguments as you like. Any string you provide will interpreted as the name, any number you use will be interpreted as the status, and any object you use will have the named properties.

const responseCatcher = require("response-catcher");

app.use(responseCatcher()); // Use the default values
app.use(responseCatcher(405)); // Change the default status to 405
app.use(responseCatcher({ logger: console.log })); // Enable logging
app.use(responseCatcher("handleError", { status: 500 })); // Change both the default function name and the status

Creating the error

Coming soon...

Ways to throw an error

Coming soon...

Keywords

FAQs

Package last updated on 28 Nov 2018

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