Express.js에서 에러 처리를 깔끔하게 하는 방법을 알려주세요.
Express.js 에러 핸들링:
// 1. 커스텀 에러 클래스class AppError extends Error { constructor(message, statusCode) { super(message); this.statusCode = statusCode; }}// 2. async 에러 래퍼const catchAsync = (fn) => (req, res, next) => fn(req, res, next).catch(next);// 3. 라우트에서 사용app.get("/users/:id", catchAsync(async (req, res) => { const user = await User.findById(req.params.id); if (!user) throw new AppError("사용자를 찾을 수 없습니다", 404); res.json(user);}));// 4. 글로벌 에러 핸들러 (반드시 마지막에)app.use((err, req, res, next) => { const status = err.statusCode || 500; res.status(status).json({ error: err.message, ...(process.env.NODE_ENV === "development" && { stack: err.stack }) });});
프로덕션에서는 스택 트레이스를 클라이언트에 노출하지 마세요.
댓글 1
Express.js 에러 핸들링:
프로덕션에서는 스택 트레이스를 클라이언트에 노출하지 마세요.