44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
/** This module provides middleware to respond with proper JSON error objects
|
|
* using NODE_ENV setting to production or development. In dev mode it send the stacktrace.
|
|
*
|
|
* You call the returned function with an app instance
|
|
*
|
|
* @author Johannes Konert
|
|
* @licence CC BY-SA 4.0
|
|
*
|
|
*
|
|
* @module restapi/error-response
|
|
* @type {Function}
|
|
*/
|
|
"use strict";
|
|
const logger = require('debug')('me2:error-response');
|
|
|
|
module.exports = (app) => {
|
|
// development error handler
|
|
// will print stacktrace as JSON response
|
|
if (app.get('env') === 'development') {
|
|
app.use(function (err, req, res, next) {
|
|
logger('Internal Error: ', err.stack);
|
|
res.status(err.status || 500);
|
|
res.json({
|
|
error: {
|
|
message: err.message,
|
|
error: err.stack
|
|
}
|
|
});
|
|
});
|
|
} else {
|
|
// production error handler
|
|
// no stacktraces leaked to user
|
|
app.use(function (err, req, res, next) {
|
|
res.status(err.status || 500);
|
|
res.json({
|
|
error: {
|
|
message: err.message,
|
|
error: {}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
};
|