error middleware를 구현해보자!
1. Express Error handling middleware
error.status로 error를 던질 때 상태코드도 설정할 수 있도록 구현했다.
import { Request, Response, NextFunction } from "express"; import { HttpException } from "../utils/error-util"; function errorMiddleware(error: HttpException, req: Request, res: Response, next: NextFunction) { console.log("\x1b[33m%s\x1b[0m", error); const status = error.status || 500; res.json({ status: status, message: error.message, }); } export { errorMiddleware };
2. error util
다음과 같이 예외도 처리할 수 있는 함수를 만들었다.
class HttpException extends Error { status: number; message: string; constructor(status: number, message: string) { super(message); this.status = status; this.message = message; } } export default HttpException
3. app.ts
에러미들웨어는 라우터 express 애플리케이션에서 가장 마지막에 넣어주어야 한다.
app.use("/user", UserRouter); app.use("/bookmark", BookMarkRouter); app.use("/schedule", ScheduleRouter); app.use("/checklist", ChecklistRouter); app.use(errorMiddleware);
4. 에러 처리
새로 만든 함수로 statusCode와 errorMessage를 함께 보내주면 구현이 완료된다.
if (!user) { throw new HttpException(401, "해당 이메일은 가입 내역이 없습니다. 다시 한 번 확인해 주세요."); }
이때 상태번호를 보내주어야 하기 때문에 HTTP 상태코드에 대해서도 공부했다.
위의 코드에 401은 인증이 필요하여 권한 없음을 의미하는 코드이다.
자세한 내용은 아래 Reference 블로그에서 확인할 수 있다.
📌 Reference
반응형
'프로젝트 개발 기록 > [개발] node.js | nest, express' 카테고리의 다른 글
TypeScript + node.js에서 Jest로 단위테스트 하기 (0) | 2022.07.17 |
---|---|
[TypeScript+Express] Redis로 Refresh Token 관리 (0) | 2022.06.21 |
[#1] TypeScript + Express에서 Sequelize 시작하기 (0) | 2022.06.14 |
TypeScript + Node.js + Express 에서 프로젝트 시작하기 (0) | 2022.06.06 |
댓글