Error handler:
Development error handler, providing stack tracesand error message responses for requests accepting text, html,or json.
Text:
By default, and when text/plain is accepted a simple stack trace or error message will be returned.
JSON:
When application/json is accepted, connect will respond with an object in the form of { "error": error }.
{ "error": error }
HTML:
When accepted connect will output a nice html stack trace.
exports = module.exports = function errorHandler(){ return function errorHandler(err, req, res, next){ if (err.status) res.statusCode = err.status; if (res.statusCode < 400) res.statusCode = 500; if ('test' != env) console.error(err.stack); var accept = req.headers.accept || ''; // html if (~accept.indexOf('html')) { fs.readFile(__dirname + '/../public/style.css', 'utf8', function(e, style){ fs.readFile(__dirname + '/../public/error.html', 'utf8', function(e, html){ var stack = (err.stack || '') .split('\n').slice(1) .map(function(v){ return '' + v + ''; }).join(''); html = html .replace('{style}', style) .replace('{stack}', stack) .replace('{title}', exports.title) .replace('{statusCode}', res.statusCode) .replace(/\{error\}/g, utils.escape(err.toString().replace(/\n/g, ''))); res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end(html); }); }); // json } else if (~accept.indexOf('json')) { var error = { message: err.message, stack: err.stack }; for (var prop in err) error[prop] = err[prop]; var json = JSON.stringify({ error: error }); res.setHeader('Content-Type', 'application/json'); res.end(json); // plain text } else { res.setHeader('Content-Type', 'text/plain'); res.end(err.stack); } }; };
Template title, framework authors may override this value.
exports.title = 'Connect';
Error handler:
Development error handler, providing stack traces
and error message responses for requests accepting text, html,
or json.
Text:
By default, and when text/plain is accepted a simple stack trace
or error message will be returned.
JSON:
When application/json is accepted, connect will respond with
an object in the form of
{ "error": error }
.HTML:
When accepted connect will output a nice html stack trace.
Source