Skip to content
📖 Tutorial - How to Debug Express Middleware
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md
failingmiddleware.js
package-lock.json
package.json
server.js
successfulmiddleware.js

README.md

Express-Debugging-Middleware

Tutorial - How to Debug Express Middleware

Express.js is a great web framework to easily create web applications. One of the amazing features of Express.js is the ability to use middleware. This allows certain actions to be run on all incoming requests to the server. For example this can be used to verify a user is logged in, or to keep logs of all requests, or to parse JSON into the correct format before handling it, or many other things. Almost every Express.js application I have built uses some middleware to help handle various tasks.

One of the hard things about middleware is debugging where problems took place. In this post I will be describing how I debug Express.js middleware to detect where problems took place.

As my starting point I'll use the following code.

app.use(failingMiddleware);
app.use(successfulMiddleware);
app.get("/", function(req, res) {
    res.send("Success");
});

Now in most situations you don't know where the request is failing. It could be failing after the first middleware or it could be failing after the second. This case is pretty obvious since I named the two middleware functions failingMiddleware and successfulMiddleware.

So in the case you don't know where it is failing I use the following code to start trying to figure out why the request isn't receiving a response.

app.use(function (req, res, next) {
    console.log("After middleware X working");
    next();
});

I normally replace the X with a number and increment it in order after each middleware. So I would run this code after each middleware and see that when going to / it doesn't even print After middleware 1 working. So therefor failingMiddleware is the one with the problem.

In this case since I built the middleware for this example the problem is that it wasn't calling the next() function to continue to the next middleware.

I have posted the source code on my GitHub if you are curious the exact code and a larger example for this.

I have also built a super simple open source middleware wrapper for this code that is much cleaner. This package, express-middleware-log will be mantained and managed by my company rrainn. You can find the source code for this package on GitHub.

You can just install from npm.

npm install --save express-middleware-log

Then require it in your application.

var logger = require("express-middleware-log");

Then instead of the code above just use my express-middleware-log.

app.use(logger("After middleware X working"));

Hopefully this helped you learn how to debug Express.js middleware.

Feel free to use my contact page if you have any questions. You can also create an issue or pull request on express-middleware-log.

You can’t perform that action at this time.