본문 바로가기

오픈소스/노드

[Node] Express 404 Not Found 처리

 Express를 사용하면 웹 서버를 구동하기가 아주 편리해집니다. 또한 Express는 미들웨어 프레임워크 를 적용하여 사용하기 때문에 웹 서버 개발의 아주 많은 도움이 되는데요. 웹 서버에 등록되지 않은 페이지 혹은 URI 로 들어가면 아래와 같은 오류 명령어 가 뜨는 경우가 대다수 있었을 것입니다. 

 

 

 이런 경우 Express에서는 어떻게 처리하면 내가 원하는 페이지 혹은 문자열이 나오게 할 수 있는지 에 대해 알아보도록 하겠습니다. 

 

 

# Contents


  • 오류 핸들러 작성
  • 오류 핸들러 라이브러리 사용

 

 

# 오류 핸들러 작성


 라우터 미들웨어의 경우에는 등록된 라우터 순으로 처리되어집니다. 라우터가 등록된 코드 끝까지 확인 한 후에 등록되지 않은 패스일 경우에 오류 메시지를 뿌려주는 것 이죠. 그러면 라우터 마지막 코드 아래에 express 객체의 use 혹은 all을 사용 하여 원하는 데이터를 뿌려주기만 하면 끝나는 것입니다. 아래 예제를 보시죠.

 

//* Set up router. */
// app.use("/", homeRouter);
// .. etc ..
app.use(errorRouter);

//* Set up Router Error Handler. */
function errorHandler(req, res) {
    const errorObj = {
        code: "404",
        message: "NotFoundError: Not Found",
    };
    res.json(errorObj);
}

 

 이렇게 간단하게 오류를 Json 형태의 데이터로 전송하였습니다. 다음은 라이브러리를 사용하여 오류 페이지로 이동해주는 코드를 작성해보도록 하겠습니다.

 

 

# 오류 핸들러 라이브러리 사용


  먼저 express-error-handler 라이브러리 를 다운받아 주세요. 

 

npm install --save express-error-handler

 

  라이브러리를 설치한 후 아래 코드를 라우터 밑에 삽입 해주세요.

 

var errorHander = expressErrorHandler({
    static: {
        404: "./views/home/404.ejs",
    },
});
app.use(expressErrorHandler.httpError(404));
app.use(errorHander);

 

 원하는 디렉토리의 파일명으로 변경한 후 서버를 시작해보면 URI가 없어도 아래와 같은 페이지가 로드 되게 됩니다.