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.
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.