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 문을 통해 응답을 하나만 하게 만들면 쉽게 오류를 해결 할 수 있습니다!