작성
·
394
0
9강 실습하면서 page.js 라우터에
router.get('/test', (req, res) => {
const err = new Error('고의로 만든 에러!');
next(err);
});
이렇게 미들웨어를 추가해놨습니다. localhost:8001/test 에 접속을 시도하면 바로 에러처리를 하고싶었어요
근데 이렇게 접속시도하니까 app.js 에 있는 404 처리 미들웨어(req,res,next)를 들렀다가, 에러처리 미들웨어(err,req,res,neext)로 넘어가는데 이유를 모르겠습니다 ㅠㅠ
console.log 로 확인했습니다.
app.js 랑 page.js 일부 코드는 아래처럼 작성했습니다.
// app.js 미들웨어 app.use('/', pageRouter); app.use((req, res, next) => { console.log('여기 오나?'); next(); }); app.use((req, res, next) => { console.log('404처리 미들웨어'); const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`); error.status = 404; next(error); }); app.use((err, req, res, next) => { res.locals.message = err.message; res.locals.error = process.env.NODE_ENV !== 'production' ? err : {}; res.status(err.status || 500); res.render('error'); }); //page.js 미들웨어 일부 router.get('/test', (req, res) => { const err = new Error('고의로 만든 에러!'); next(err); // res.json({'admin':'minsang', 'age':28}); });
제 예상엔 localhost:8001/test로 접속 시도하면, 먼저 app.get('/') 부분에서 pagerouter로 넘어가고, router.get('/test')미들웨어에서 next(error) 코드를 실행하면 app.get((err,req,res,next)) 부분으로 바로 넘어갈 줄 알았는데 콘솔은 아래와 같이 나왔습니다.