더북(TheBook)

6.5.3 에러 처리 미들웨어

 

지금까지 템플릿 엔진에 대해 살펴보았습니다. 이제 에러 처리 미들웨어의 코드가 어떤 기능을 하는지 보일 것입니다.

app.js

...
// 에러 핸들러
app.use(function(err, req, res, next) {
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') ==='development' ? err : {};

  res.status(err.status || 500);
  res.render('error');
});
...

 

에러 처리 미들웨어는 error라는 템플릿 파일을 렌더링합니다. 렌더링 시 res.locals.messageres.locals.error에 넣어준 값을 함께 렌더링합니다. res.render에 변수를 대입하는 것 외에도, 이렇게 res.locals 속성에 값을 대입하여 템플릿 엔진에 변수를 주입할 수 있습니다.

error 객체는 시스템 환경이 development(개발 환경)가 아닌 경우에만 표시됩니다. 배포 환경인 경우에는 에러 메시지가 표시되지 않습니다. 에러 메시지가 노출되면 보안에 취약할 수 있기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.