inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

next(err) 로 next에 인자를 줬는데 바로 error처리 미들웨어로 안넘어갑니다ㅠㅠ

421

whsrpdla

작성한 질문수 8

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)로 넘어가는데 이유를 모르겠습니다 ㅠㅠ

mysql nodejs mongodb Sequelize

답변 1

1

제로초(조현영)

404 들렀다가 에러 처리 미들웨어로 넘어간 것은 어떻게 파악하신 건가요? 에러 처리 미들웨어로 넘어간 뒤에 화면에 고의로 만든 에러! 라고 떴나요?

0

whsrpdla

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)) 부분으로 바로 넘어갈 줄 알았는데 콘솔은 아래와 같이 나왔습니다.

nodemon] starting `node app.js`
8001 번 포트에서 대기중
여기 오나?
404처리 미들웨어
GET /json 404 25.851 ms - 2692
GET /main.css 304 1.361 ms - -

0

제로초(조현영)

요청이 /test가 아니라 /json인데요?

0

whsrpdla

아 저런 실수를..감사합니다!

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

925

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

386

1

리뉴얼 강의 및 공부 방법

0

589

1

jwt decode

0

1136

1

node.js 교과서 3판 질문드립니다

0

396

1

passport와 jwt

0

438

1

리뉴얼 강의

0

427

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

488

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

518

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3542

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

244

1

multer 사용시 file 외 name값은 못받나용?

0

428

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

292

1

Strategy의 done에 대해 질문드립니다.

0

373

1

안녕하세요 fs 권한 관련 질문드립니다

0

455

1

시퀄라이즈 연결질문...

0

510

2

res.setHeader vs res.cookie

0

1797

3