본문 바로가기
WEB/Nodejs-express

[Nodejs-express] 에러처리

by Ellen571 2020. 8. 9.

[생활코딩] 에러처리

 

 

404 미들웨어 추가

 

app.use(function(req, res, next){
 res.status(404).send('Sorry cant find that');
});

app.listen(3000, () => console.log('Example app listening on port 3000'));

 

미들웨어 중 가장 마지막에 추가

- 미들웨어는 순차적으로 실행되기에 더이상 실행될게 없을 때 404를 보내고 메세지를 전달

 

 

없는 페이지 처리

 

app.get('/page/:pageId', function(req, res, next){
// 세번째 인자로 next를 받음

  var filteredId = path.parse(req.params.pageId).base;
  fs.readFile(`data/${filteredId}`, 'utf8', function(err, description){

    if(err){ // 없는 페이지로 접근하면
      next(err); // err 미들웨어 실행
    } else {
      var title = req.params.pageId;
      var sanitizedTitle = sanitizeHtml(title);
      var sanitizedDescription = sanitizeHtml(description, {
        allowedTags:['h1']
      });
      var list = template.list(req.list);
      var html = template.HTML(sanitizedTitle, list,
        `<h2>${sanitizedTitle}</h2>${sanitizedDescription}`,
        ` <a href="/create">create</a>
          <a href="/update/${sanitizedTitle}">update</a>
          <form action="/delete_process" method="post">
            <input type="hidden" name="id" value="${sanitizedTitle}">
            <input type="submit" value="delete">
          </form>`
      );
      res.send(html);
      
    }
  });
});

 

 

없는 페이지 접근시 메시지 출력하기

 

app.use(function(req, res, next){
  res.status(404).send('Sorry cant find that');
});

// 404 다음에 넣기
// next(err)가 실행되면 인자가 4개인 미들웨어가 실행됨
app.use(function(err, req, res, next){
  console.error(err.stack); // 에러 내용 출력
  res.status(500).send('Something broke');
});

app.listen(3000, () => console.log('Example app listening on port 3000'));

 

반응형