Cannot set headers after they are sent to the client

성훈·2021년 9월 8일
0

Error I Faced

목록 보기
3/14
post-thumbnail

서버가 클라이언트에 복수의 응답을 보내려고 할때 발생하는 에러이다.

나는 지금까지 res.send 를 사용하면 throw 에러처럼 코드 진행이 멈출 줄 알았는데,

그게 아니었다.

if(condition){
  res.sendStatus(400)
}
res.sendStatus(200)

위 코드를 봤을때 조건문에 만약 조건에 해당하면 400을 보내라라고 설정하고

그 다음에 상태코드 200을 보내라는 코드가 작성된다면

두번 응답을 보내게 되는 꼴이 되는 것이다.

이걸 해결하려면

if(condition){
  res.sendStatus(400)
} else {
  res.sendStatus(200)
}

이런 식으로 else로 분기시켜서 둘 중 하나만 통과되게 하거나,

if(condition){
  return res.sendStatus(400)
}
res.sendStatus(200)

조건에 해당할 경우 반환을 시켜버려서 코드 실행을 멈추는 방법이 있다.

지금까지 return을 쓸때가 있고, 안쓸때가 있던데 무슨 차이인지 궁금해했었는데, 이번 에러로 알아서 기분이 좋다.

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글