Express Error Handling

Your textbooks has a lesson 11 about configuration and error handling. The configuration part we have handled allready but editing the scripts property in package.json.

The error handling is built into the way Express creates its app.js. Look at the bottom part from the comment // catch 404 and forward to error handler through the end of the file.

Example 22.1. The Application Reviewed. myg91/app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');                // activate Router/Controller
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);                                  // path to Router/Controller
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

The next function is called to show that your part of coding is done in the request/response flow, and that you want Express to move on. In the file you will see that the handling of a 404 error is handled by passing an error handling function to next. You will also see that the error handler has a default view defined in views/error.pug.