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 |
댓글