const SalixError = require('../../util/salixError'); const UserError = require('../../util/user-error'); const logToConsole = require('strong-error-handler/lib/logger'); module.exports = function() { return function(err, req, res, next) { // Thrown user errors if (err instanceof SalixError) { err.message = req.__(err.message, ...err.translateArgs); return next(err); } // Validation errors if (err.statusCode == 422) { try { let code; let {messages} = err.details; for (code in messages) break; err.message = req.__(messages[code][0]); return next(err); } catch (e) {} } // MySQL user-defined exceptions if (err.sqlState == '45000') return next(new UserError(req.__(err.sqlMessage))); // Logs error to console let env = process.env.NODE_ENV; let useCustomLogging = env && env != 'development' && (!err.statusCode || err.statusCode >= 500); if (useCustomLogging) logToConsole(req, err); next(err); }; };