Express Promise Router for JSON responses

Usage no npm install needed!

<script type="module">
  import expressPromiseJsonRouter from '';



Based on express-promise-router.

A simple wrapper for Express 4's Router that allows middleware to return promises. This package makes it simpler to write route handlers for Express when dealing with promises by reducing duplicate code.

Getting Started

Install the module with: npm install express-promise-json-router --save.

express-promise-json-router is a drop-in replacement for Express 4's Router.


Middleware and route handlers can simply return a promise. If the promise is rejected, express-promise-json-router will call res.status(err.statusCode || err.status).json(err) with the reason. This functionality removes the need to explicitly define a rejection handler.

// With Express 4's router
var router = require('express').Router();

router.use('/url', function (req, res, next) {

// With express-promise-json-router
var router = require('express-promise-json-router')();

router.use('/url', function (req, res) {
    return Promise.reject(); // will throw 500

router.use('/url', function (req, res) {
    return Promise.reject({statusCode: 403}); // will throw 403 error. Also supports status instead of statusCode

When the returned promise is resolved, its value will be used to call res.status(data.statusCode || data.status).json(data)

router.use('/url', function (req, res) {
    // equivalent to calling next()
    return Promise.resolve({statusCode: 201, otherInfo: 1}); // will result in a 201 response with the object passed in the response

This package still allows calling next directly.

router = require('express-promise-json-router')();

// still works as expected
router.use('/url', function (req, res, next) {


Licensed under the MIT license.