[Node.js] 404 응답 미들웨어

E woo·2023년 6월 26일

Node.js

목록 보기
1/4

404 에러 처리

Node.js 에서 에러 처리 미들웨어는 다음과 같은 형식을 가진다.

// 에러 처리 미들웨어
app.use((err, req, res, next) => {
  res.locals.message = err.message;
  res.locals.erorr = process.env.NODE_ENV !== "production" ? err : {};
  res.status(err.status || 500);
  res.sender("error");
});

그러나 404 응답 에러는 위의 에러 처리 미들웨어에서 캐지하지 못한다.

따라서 404 응답은 익스프레스의 모든 미들웨어 및 라우터를 실행했음에도 어느 것도 응답하지 않았다면 그때 처리하도록 한다.

app.use("/", pageRouter);

// .... (많은 미들웨어, 응답 처리들)

// 404 응답 미들웨어
app.use((req, res, next) => {
  const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
  error.status = 404;
  next(error);
});

즉, 수행하고자 하는 미들웨어와 응답처리를 거쳤음에도
응답하지 못한 것에 대해 404 에러로 처리하게 되고

이를 next(error) 를 통해 수동으로 에러 처리 미들웨어에게 넘기게 된다.

profile
뒘벼

0개의 댓글