Express.js 500 Error Handler

JS
S
JavaScript

Please add your error handler only after all routes have been registered into the Express.js router. As a reminder, Express.js works Top Down in terms of callback passing via next().

1// ============================ server.ts ============================
2// server.ts
3// ...
4const errorHandler = (err: any, req: any, res: any, next: any) => {
5  if (res.headersSent) {
6    return next(err);
7  }
8  res.status(500);
9  res.send({ error: err.message || 'Something went wrong' });
10};
11public addErrorHandler() {
12   this.app.use(errorHandler);
13}
14
15
16// ============================ app.ts ============================
17import * as dotenv from 'dotenv';
18import Server from './classes/server';
19import IndexRoute from './routes/index.route';
20import LivenessProbeRoute from './routes/liveness-probe.route';
21import ImageResolverRoute from './routes/image-resolver.route';
22
23if (!process.env.PRODUCTION) {
24  dotenv.config({ path: './env/.env.development' });
25} else {
26  dotenv.config({ path: './env/.env.production' });
27}
28
29// App Initialization
30const app = new Server(process.env.PORT || 8080);
31
32console.log('running on port', process.env.PORT);
33
34// Routes
35new ImageResolverRoute(app);
36new LivenessProbeRoute(app);
37const index = new IndexRoute(app.getRoutes());
38app.addRoute('/', index.router);
39app.addErrorHandler();
40
41// EntryPoint
42app.start();

Created on 12/10/2018