반응형
HTTP 상태 코드별로 에러 처리를 할 수도 있다.
다른 말로는, 에러 페이지를 커스터마이징한다고도 할 수 있을 것 같다.
※ HTTP 상태 코드 모음
https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
다음과 같은 방법으로, 특정 상태 시 여러분이 커스터마이징한 페이지로 이동시킬 수 있다.
res.status([HTTP 상태 코드]).render([View 파일]);
다음 예제는 404, 500 에러를 처리하는 간단한 예제이다.
여러분이 주목할 것은 error_404.ejs, error_500.ejs 파일이다.
404 에러는 서버가 요청한 페이지를 찾을 수 없을 경우고, 500 에러는 내부 서버에 에러가 생길 경우다.
먼저, 404 에러를 발생시키기 위해 요청을 처리하지 않는 URL에 접속할 것이다.
그리고, 500 에러를 발생시키기 위해 next() 메소드에 'route'가 아닌 다른 내용을 넣어서 에러를 발생시킬 것이다. 이렇게 next()로 오류가 발생되면, 이 경우에는 에러를 처리하는 미들웨어로 건너뛰게 된다.
<app.js>
에러 처리 미들웨어는 에러가 발생한 부분의 뒤쪽에 넣어야 정상적으로 동작한다.
const express = require('express')
const bodyParser = require('body-parser')
const ejs = require('ejs')
const app = express()
app.set("view engine", "ejs")
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.use('/static', express.static('static'))
app.get('/hello', function(req,res){ // 일반적인 요청 처리
res.render('home');
})
app.get('/trouble', function(req,res,next){ // 에러 유발
next(err);
})
app.use(function(req, res, next) { // 404 : Not Found 에러
res.status(404).render('error_404'); //★
})
app.use(function(err, req, res, next) { // 500 : 내부 서버 에러
res.status(500).render('error_500'); //★
})
app.listen(3000, ()=>console.log('Example app listening on port 3000!'))
<error_404.ejs>
<!doctype html>
<html>
<head>
<title>send</title>
</head>
<body>
<h1>404 error page!</h1>
</body>
</html>
<error_500.ejs>
<!doctype html>
<html>
<head>
<title>send</title>
</head>
<body>
<h1>500 error page!</h1>
</body>
</html>
결과
1) 404 에러 -> "http://localhost:3000/hi" 접속
2) 500 에러 -> "http://localhost:3000/trouble" 접속
반응형
'Node.js > Express' 카테고리의 다른 글
[Express] 예제로 Router 쉽게 이해하기 (0) | 2021.07.29 |
---|---|
[Express] Compression / app.use() / 정적 파일 (0) | 2021.07.28 |
[Express] View 처리 (0) | 2021.07.27 |
[Express] Get, Post 데이터 받기 / 동적 URL 처리 (0) | 2021.07.26 |
[Express] Express 소개 / starter 프로젝트 생성 (0) | 2021.07.25 |
댓글