express - middleWare ) Error 처리

YoonJu Lee·2021년 7월 17일
0

Node.js

목록 보기
4/10
post-thumbnail

Error 처리

가장 흔한 에러 : 존재하지 않은 파일을 찾았을 때
(404 - Not Found )

Google : Express Not found

  1. 코드 추가 : 맨 마지막에 넣어줌
  1. 결과 ) 없는 페이지 모습

  2. 맨 마지막에 넣는 모습
    : 이제까지는 맨 위에 코드를 넣었지만, 이것은 맨 아래에 줌
    ==> 미들웨어는 순차적으로 실행하기 때문에, 더이상 실행하지 못하고 맨 밑에까지 와서도 못 찾으면 실행하는 것이므로, 404 statuscode를 내뱉는다.


4. Problem

목차에 'Apple' 파일이 없지만, path에 Apple을 넣으니, 화면에 'Apple'이라고 뜬다.
보통 페이지가 없는 경우에 Error를 발생시킨다.

4- 1. 상세 페이지 코드 수정

1) Err가 있는 경우 next를 호출한다.

app.get('/page/:pageId', (request, response, next) => {
  var filteredId = path.parse(request.params.pageId).base;
  fs.readFile(`data/${filteredId}`, 'utf8', function (err, description) {

2)
fs.readFile(data/${filteredId}, 'utf8', function (err, description)
; data/${filteredId}에서 file을 읽는데, 그 파일이 없다면 callback함수의
첫번째 param으로 Error 객체를 전달하도록 되어잇따.

if (err) {
next(err)
}

3) err 가 발생한다면
next(err) 이 실행한는데, 이는..
이 라우트( app.get('page/:pageId'~~)안의 next 콜백이 실행한다.
param이 없는 기본 next()는 통해서 다음 middleWare를 던져주고, 인자로 'route'를 전달하면 다음 미들웨어를 실행시킴
그 외의 데이터가 들어오면, err라는 약속 체결되어있다.
next(err); 는 err데이터를 전달해 주면, err를 던지는 것이다

4- 2. Err Message 출력)

4- 3. 화면의 Err Message 변경

expressjs.com

1) 코드추가 : Status 404 코드 밑에 붙임.

app.use(function (err, req, res, next) {
  console.error(err.stack)
  res.status(500).send('Something broke!')
})

( * 위치 참조_)

2) 설명

  • Msut_ status Code : 404 밑에 놔야함.
  • 이, Err Handling을 위한 middleWare는 특이하게도,4개의 인자를 받는다.
    위에서 실행 된 next(err)함수 로부터 첫번째 Err인자에 Err 데이터가 담긴다.
  • 4개의 인자를 가지고 있는 함수
    express에서는 Err를 핸들링 하기 위한 MiddleWare로 약속이 되어 있다..
  • 실행 순서 >
    1. 상세페이지에서 페이지를 찾을 수 없는 경우 if(err)에 걸려, next(err) 함수가 실행
    1. 이 next(err) 함수 : 뒤로 어떤 미들웨어가 등록되어 있든지 싹 다 무시하고 제일 맨 끝의 밑의 인자가 4개인 함수로서 등록된 미들웨어가 호출된다.
    2. 그 첫번째 자리로 Err 데이터가 전달된다.
profile
Coder가 아닌 Engineer를 향해서.

0개의 댓글