// 统一错误处理中间件 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;