/** * Error Handling Middleware * 統一的錯誤處理 */ /** * 404 Not Found Handler */ export function notFoundHandler(req, res, next) { res.status(404).json({ success: false, error: 'Not Found', message: `無法找到路徑: ${req.originalUrl}` }); } /** * Global Error Handler */ export function errorHandler(err, req, res, next) { console.error('Error:', err); // 預設錯誤狀態碼 const statusCode = err.statusCode || 500; // 錯誤訊息 const message = err.message || '伺服器發生錯誤'; // 開發環境返回完整錯誤堆疊 const response = { success: false, error: err.name || 'Error', message: message }; if (process.env.NODE_ENV === 'development') { response.stack = err.stack; response.details = err.details || null; } res.status(statusCode).json(response); } /** * Async Handler Wrapper * 包裝 async 函數以自動捕獲錯誤 */ export function asyncHandler(fn) { return (req, res, next) => { Promise.resolve(fn(req, res, next)).catch(next); }; } /** * Validation Error Handler */ export function validationErrorHandler(errors) { const error = new Error('驗證失敗'); error.statusCode = 400; error.details = errors; return error; }