HttpErrorPages/examples/koa.js
2020-11-15 11:55:57 +01:00

80 lines
No EOL
2 KiB
JavaScript

const _koa = require('koa');
const _webapp = new _koa();
// use require('http-error-pages') for regular apps!
const _httpErrorPages = require('../lib/main');
async function bootstrap(){
// use http error pages handler (INITIAL statement!)
// because of the asynchronous file-loaders, wait until it has been executed - it returns an async handler
_webapp.use(await _httpErrorPages.koa({
lang: 'en_US',
payload: {
footer: 'Hello <strong>World</strong>',
pagetitle: 'we are sorry - an internal error encountered',
},
filter: function(data){
// remove footer
//data.footer = null;
return data;
},
onError: function(data){
// for debugging purpose only!!
// use custom middleware for errorlogging!!
console.log(`[koa] ERROR: ${data.title}\n${data.error.stack}`)
}
}));
// demo handler
_webapp.use(async (ctx, next) => {
if (ctx.path == '/'){
ctx.type = 'text';
ctx.body = 'HttpErrorPages Demo';
}else{
return next();
}
});
// throw an 403 error
_webapp.use(async (ctx, next) => {
if (ctx.path == '/my403error'){
ctx.throw(403);
}else{
return next();
}
});
// throw an 533 error with status 500
_webapp.use(async (ctx, next) => {
if (ctx.path == '/x533'){
const e = new Error("custom");
e.errorpage = '533';
e.status = 500;
throw e;
}else{
return next();
}
});
// throw an internal error
_webapp.use(async (ctx, next) => {
if (ctx.path == '/500'){
throw new Error('Server Error');
}else{
return next();
}
});
// start service
_webapp.listen(8888);
}
// invoke bootstrap operation
bootstrap()
.then(function(){
console.log('Running Demo on Port 8888');
})
.catch(function(e){
console.error(e);
});