21 lines
625 B
JavaScript
21 lines
625 B
JavaScript
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;
|
|
|
|
console.error(`[未处理错误] ${req.method} ${req.originalUrl}`, {
|
|
message: err?.message,
|
|
stack: err?.stack
|
|
});
|
|
|
|
return res.status(status).json({
|
|
success: false,
|
|
message: status >= 500 ? '服务器内部错误' : (err?.message || '请求处理失败')
|
|
});
|
|
}
|
|
|
|
module.exports = { expressErrorHandler };
|