1
1
mirror of https://github.com/ZeroCatDev/ClassworksKV.git synced 2025-12-07 13:03:09 +00:00

feat: 增强错误处理,统一JWT过期返回格式,添加业务错误码支持

This commit is contained in:
Sunwuyuan 2025-11-16 16:11:31 +08:00
parent 398f79d5c9
commit 4ec10acfcf
No known key found for this signature in database
GPG Key ID: A6A54CF66F56BB64
3 changed files with 14 additions and 7 deletions

View File

@ -14,14 +14,16 @@ const errorHandler = (err, req, res, next) => {
console.error(err);
}
// 提取错误信息
const statusCode = err.statusCode || err.status || 500;
const message = err.message || "服务器错误";
const details = err.details || null;
const statusCode = err.statusCode || err.status || 500;
const message = err.message || "服务器错误";
const details = err.details || null;
const code = err.code || undefined;
// 返回统一格式的错误响应
return res.status(statusCode).json({
success: false,
message: message,
code: code,
details: details,
error:
process.env.NODE_ENV === "production"

View File

@ -76,7 +76,10 @@ export const jwtAuth = async (req, res, next) => {
}
if (newTokenError.name === 'TokenExpiredError' || legacyTokenError.name === 'TokenExpiredError') {
return next(errors.createError(401, "JWT token已过期"));
// 统一的账户JWT过期返回
// message: JWT_EXPIRED用于客户端稳定识别
// code: AUTH_JWT_EXPIRED业务错误码
return next(errors.createError(401, "JWT_EXPIRED", null, "AUTH_JWT_EXPIRED"));
}
return next(errors.createError(401, "token验证失败"));

View File

@ -1,16 +1,18 @@
/**
* 创建标准错误对象
* @param {number} statusCode - HTTP状态码
* @param {string} [message] - 错误消息
* @param {string} [message] - 错误消息推荐使用稳定的机器可读文本 JWT_EXPIRED
* @param {object} [details] - 附加信息
* @param {string} [code] - 业务错误码 AUTH_JWT_EXPIRED
* @returns {object} 标准错误对象
*/
const createError = (statusCode, message, details = null) => {
const createError = (statusCode, message, details = null, code = null) => {
// 直接返回错误对象,不抛出异常
const error = {
statusCode: statusCode,
message: message || '服务器错误',
details: details
details: details,
code: code || undefined,
};
return error;
};