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 };