clouddisk-project/backend/src/middleware/errorHandler.js

58 lines
1.3 KiB
JavaScript

// 统一错误处理中间件
const errorHandler = (err, req, res, next) => {
console.error('Error:', err);
// JWT 错误
if (err.name === 'JsonWebTokenError') {
return res.status(401).json({
success: false,
error: 'Invalid token',
code: 'INVALID_TOKEN'
});
}
if (err.name === 'TokenExpiredError') {
return res.status(401).json({
success: false,
error: 'Token expired',
code: 'TOKEN_EXPIRED'
});
}
// Multer 文件上传错误
if (err.code === 'LIMIT_FILE_SIZE') {
return res.status(400).json({
success: false,
error: 'File too large',
code: 'FILE_TOO_LARGE'
});
}
if (err.code === 'LIMIT_FILE_COUNT') {
return res.status(400).json({
success: false,
error: 'Too many files',
code: 'TOO_MANY_FILES'
});
}
// 数据库错误
if (err.code === 'SQLITE_CONSTRAINT') {
return res.status(400).json({
success: false,
error: 'Data constraint violation',
code: 'CONSTRAINT_VIOLATION'
});
}
// 默认错误
const statusCode = err.statusCode || 500;
res.status(statusCode).json({
success: false,
error: err.message || 'Internal server error',
code: err.code || 'INTERNAL_ERROR'
});
};
module.exports = errorHandler;