express.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const _express = require('express');
  2. const _webapp = _express();
  3. // use require('http-error-pages') for regular apps!
  4. const _httpErrorPages = require('../lib/main');
  5. async function bootstrap(){
  6. // demo handler
  7. _webapp.get('/', function(req, res){
  8. res.type('.txt').send('HttpErrorPages Demo');
  9. });
  10. // throw an 403 error
  11. _webapp.get('/my403error', function(req, res, next){
  12. const myError = new Error();
  13. myError.status = 403;
  14. next(myError);
  15. });
  16. // throw an unknown error
  17. _webapp.get('/unknown', function(req, res, next){
  18. const myError = new Error();
  19. myError.status = 523;
  20. next(myError);
  21. });
  22. // throw an internal error
  23. _webapp.get('/500', function(req, res){
  24. throw new Error('Server Error');
  25. });
  26. // custom errorhandling middleware
  27. // use this pattern in production to log errors!
  28. _webapp.use(function(err, req, res, next){
  29. console.log(`[custom logging middleware] ${err.message}`);
  30. // forward error
  31. next(err);
  32. });
  33. // use http error pages handler (final statement!)
  34. // because of the asynchronous file-loaders, wait until it has been executed
  35. await _httpErrorPages.express(_webapp, {
  36. lang: 'en_US',
  37. payload: {
  38. footer: 'Hello <strong>World</strong>',
  39. pagetitle: 'we are sorry - an internal error encountered',
  40. },
  41. filter: function(data, req, res){
  42. // remove footer
  43. //data.footer = null;
  44. return data;
  45. },
  46. onError: function(data){
  47. // for debugging purpose only!!
  48. // use custom middleware for errorlogging!!
  49. console.log(`[expressjs] ERROR: ${data.title}\n${data.error.stack}`)
  50. }
  51. });
  52. // start service
  53. _webapp.listen(8888);
  54. }
  55. // invoke bootstrap operation
  56. bootstrap()
  57. .then(function(){
  58. console.log('Running Demo on Port 8888');
  59. })
  60. .catch(function(e){
  61. console.error(e);
  62. });