Files

27 lines
798 B
JavaScript

const { getRequestId, logger } = require('../utils/logger');
function expressErrorHandler(err, req, res, next) {
if (res.headersSent) return next(err);
const requestedStatus = Number(err?.statusCode || err?.status);
const status = Number.isInteger(requestedStatus) && requestedStatus >= 400 && requestedStatus <= 599
? requestedStatus
: 500;
const requestId = getRequestId(req);
(req.log || logger).error({
err,
method: req.method,
path: req.path || req.originalUrl,
statusCode: status
}, 'unhandled request error');
return res.status(status).json({
success: false,
message: status >= 500 ? '服务器内部错误' : (err?.message || '请求处理失败'),
...(requestId ? { requestId } : {})
});
}
module.exports = { expressErrorHandler };