You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
771 B
JavaScript

"use strict";
const defaultValue = require("default-value");
const http = require("http");
module.exports = function errorHandler(error, _req, res, _next) {
let statusCode = (error.isHttpError && error.statusCode != null)
? error.statusCode
: 500;
let errorCode = (error.isHttpError && error.errorCode != null)
? error.errorCode
: "M_UNKNOWN";
let errorMessage = (error.errorCode !== 500)
? defaultValue(error.message, http.STATUS_CODES[statusCode])
: "An internal server error occurred. Please contact the server administrator for more information."
/* TODO: Add contact details? */
let errorMeta = (error.errorMeta != null)
? error.errorMeta
: {};
res.json(Object.assign({}, errorMeta, {
errcode: errorCode,
error: errorMessage
}));
};