[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 오류

Shin·2022년 3월 14일
4

Error

목록 보기
3/4

[ERR_HTTP_HEADERS_SENT]

node 로 express를 통해 작업 중 아래와 같은 오류가 발생했습니다.
[ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
오류 [ERR_HTTP_HEADERS_SENT]는 서버가 클라이언트에 둘 이상의 응답을 보내려고 할 때 발생하는 오류 입니다.
즉 하나의 응답을 보낸 후 또 다른 응답을 동시에 보내려고 할 때 생기는 오류 입니다.


예시

router.get("/", verifyToken, (req, res) => {
  if (req.user) {
    res.send(`${req.user.username}님 환영합니다!`);
  }
  res.send("로그인 후 이용해주세요.");
});

위 코드를 보면 req.user에 값이 있을 경우에 그 안에 담긴 username 값을 포함해서 내보내고, 만약 없다면 "로그인 후 이용해주세요." 라는 문구를 내보내게 만들었습니다.

이때 req.user값이 있어서 if 문을 들어가게 되면 앞서 말했던 username을 포함한 값을 내보낸 후 나와서 "로그인 후 이용해주세요." 라는 문구까지 내보내려고 응답을 중복해서 두번 내려하기 때문에 오류가 발생하는 것 입니다.


해결 방법

router.get("/", verifyToken, (req, res) => {
  if (req.user) {
    return res.send(`${req.user.username}님 환영합니다!`);
  }
  return res.send("로그인 후 이용해주세요.");
});

위 코드 처럼 내보낼 때 return 문을 통해 응답을 하나만 하게 만들면 쉽게 오류를 해결 할 수 있습니다!

profile
누군가의 선택지가 될 수 있는 사람이 되자

0개의 댓글