UNPKG

902 BJavaScriptView Raw
1var path = require('path');
2var accepts = require('accepts');
3
4require('simple-errors');
5
6module.exports = {
7 error: function(err, req, res, next) {
8 if (!err.status)
9 err.status = 500;
10
11 res.statusCode = err.status || 500;
12
13 var errorJson = Error.toJson(err);
14 if (res.status !== 500)
15 errorJson.stack = null;
16
17 res.set('Cache-Control', 'no-cache');
18 res.statusCode = err.status;
19
20 var accept = accepts(req);
21 switch (accept.type(['json', 'html'])) {
22 case 'json':
23 res.json(errorJson);
24 break;
25 case 'html':
26 var errorView = path.join(__dirname, '../views/error.jade');
27 res.render(errorView, errorJson);
28 break;
29 default:
30 // the fallback is text/plain, so no need to specify it above
31 res.setHeader('Content-Type', 'text/plain')
32 res.write(JSON.stringify(errorJson));
33 break;
34 }
35 }
36}