1 | var path = require('path');
|
2 | var accepts = require('accepts');
|
3 |
|
4 | require('simple-errors');
|
5 |
|
6 | module.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 |
|
31 | res.setHeader('Content-Type', 'text/plain')
|
32 | res.write(JSON.stringify(errorJson));
|
33 | break;
|
34 | }
|
35 | }
|
36 | }
|