# 본 게시물은 egoing님의 생활코딩 강의를 복습하며 정리한 내용입니다
Express module의 Error Handling
const topic = require("./lib/topic.js");
const author = require("./lib/author.js");
const express = require("express");
const bodyParser = require('body-parser');
const compression = require('compression');
const db = require("./lib/db.js");
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(compression());
app.use(express.static('public'));
app.get('*', (request, response, next) => {
db.query('SELECT * FROM topic',function(err,topics){
if (err) {
next(err);
} else {
request.topics = topics;
console.log(topics);
next();
}
});
});
app.get('/',topic.home);
app.get('/page/:pagetitle',topic.page);
app.get('/update/:pagetitle',topic.update);
...
app.post('/author_delete_process',author.author_delete_process);
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
// 17행과 같은 곳에서 error handling을 위하여 next(err)를 호출하게 되면
// 다음에 어떠한 middleware가 정의되었는지에 전혀 관계 없이
// 인자가 4개인 위와 같은 middleware를 실행시키게 되어 있다.
// 이 사실을 이용하여 error handling이 가능.
app.use(function(req, res, next) {
res.status(404).send('Sorry cant find that!');
});
// 404를 처리하는 middleware의 경우는
// 내가 정의한 라우팅보다 맨 뒤쪽에 위치하도록 하여야 한다
// middleware는 정의한 순서대로 실행되기 때문이다.
// 만약 존재하지 않는 페이지를 서버가 요청받게 되면
// 쭉 타고 내려오다가 404에 해당되는 41라인의 middleware가 실행된다.
app.listen(3000,()=> console.log("Web Server listening on 3000..."));
'Back-End > node.js' 카테고리의 다른 글
[Node.js] node.js로 cookie 다루기 (0) | 2022.03.07 |
---|---|
Express app 구현 시 주의해야 할 보안 관련 이슈 (0) | 2022.03.04 |
Express 모듈에서 static file의 서비스 (0) | 2022.03.01 |
Node.js Middleware의 개념 및 실행 순서 (0) | 2022.03.01 |
express 프레임워크를 이용한 node.js의 골격 (0) | 2022.02.23 |