서버가 클라이언트에 복수의 응답을 보내려고 할때 발생하는 에러이다.
나는 지금까지 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을 쓸때가 있고, 안쓸때가 있던데 무슨 차이인지 궁금해했었는데, 이번 에러로 알아서 기분이 좋다.