Express.js 500 Error Handler
JS
S
JavaScriptPlease 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