inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

res.send() === throw new Error() ???

해결된 질문

212

이승훈

작성한 질문수 49

0

 항상 답변 달아주시는 조현영님께 감사 인사부터 드립니다. 

라우터 메서드를 생성하고 조건에 따라 next("route")와 next()를 분기하였습니다.

app.get(
    "/routing",
    (req, res, next) => {
        res.send("routing");
        if (false) {
            next("route");
        } else {
            next();
        }
    },
    (req, res) => {
        console.log("라우팅 실패");
    }
);

app.get("/routing", (req, res) => {
    console.log("라우팅 성공");
});
 
 

조건문이 false인 상태로 next()함수로 바로 다음에 있는 미들웨어가 실행되며 console.log("라우팅 실패")가 실행됩니다. 그런데 

app.get(
    "/routing",
    (req, res, next) => {
        res.send("routing");
        if (false) {
            next("route");
        } else {
            next();
        }
    },
    (req, res) => {
        console.log("라우팅 실패");
        throw new Error("에러 발생");
    }
);

조건문 다음 미들웨어에 에러를 발생 시키는 코드를 추가하고 실행하면 Cannot set headers 에러가 발생합니다. 전에 올렸던 질문이랑 유사하죠. 제가 궁금한 것은 분명히 res.send()(res객체를 사용한 응답형태 메서드)를 두번 이상 사용하지 않았는데도 (전체 코드에서 get메서드로 "/routing"을 참조하는 코드는 없습니다.) 응답 객체를 두개 이상 사용한 효과가 throw new Error() 코드를 집어넣었더니 발생한다는 것이었습니다. throw new Error가 응답 객체(req)와 어떠한 관련이 있나요?

nodejs mongodb mysql Sequelize

답변 1

0

제로초(조현영)

throw new Error를 하면 에러 처리 미들웨어로 요청이 넘어갑니다. 에러 처리 미들웨어에서 res.send를 하셨을 겁니다. 에러 처리 미들웨어가 없다 하더라도 익스프레스에서 기본적으로 에러 처리 미들웨어를 갖고 있습니다.

0

이승훈

에러 처리 미들웨어를 만들었다는 사실을 깜빡했었네요 감사합니다!

 

리눅스 노드 설치시 패키지

0

172

0

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

0

926

3

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

0

2297

2

a[title] 질문드립니다

0

386

1

리뉴얼 강의 및 공부 방법

0

589

1

jwt decode

0

1138

1

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

0

396

1

passport와 jwt

0

438

1

리뉴얼 강의

0

428

2

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

0

359

1

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

0

489

1

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

0

511

2

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

0

518

1

질문있습니다.

0

348

1

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

1

3543

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

245

1

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

0

430

1

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

0

303

1

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

0

293

1

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

0

374

1

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

0

456

1

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

0

510

2

res.setHeader vs res.cookie

0

1797

3