코드를 작성하면서 오늘 처음으로 스코프안에 respones를 여러번 요청하다가 오류가 났었다.
그 오류의 내용은 이렇다.
Cannot set headers after they are sent to the client
http로 요청을 하면서 반응을 했는데 한번더 반응을 하는 코드를 작성을 해서 이런 오류가 난 것 같다.
이 오류에 대해 이야기 해보니 같은 스코프(scope)안에 2개의 respones를 보내면 http에서 인식을 못해 오류가 난다고 한다. 그럼 코드 예시를 들어보겠다. ( # 참고 :: 오전에 코드 작성할때는 이런 느낌이 아니였음, 오류 메세지를 보고 해결점을 찾아야 함!!!)
router.get("/posts/:postId/comments", async (req, res) => {
const { data } = req.query;
const postId = req.params.postId;
const comments = await Comments.findAll({ where: { postId: postId } });
if (!postId) return res.status(404).json({ errorMessage: "error" });
return res.status(404).json({ errorMessage: "Error" });
res.status(200).json(comments );
});
이렇게 아무렇게 테스트코드를 쳐 보았다. 겉보기엔 아무렇지않게 보일수도 있지만,
return 으로 res(404) 로 응답을 해주었고 또 다음 응답을 하고 또 다음 성공신호로 res(200)을 반환하는것을 볼 수 있다.
vscode로 확인을 한다면 "접근할 수 없는 코드가 있습니다" 라고 메세지가 뜨는 것을 볼 수 있는데 같은 스코프 안에 여러번 respones값을 반환해서 http에 하나의 요청에 두 개의 응답이 들어가서 그렇다.
앞으로 코드를 작성할 때 스코프의 대한 개념도 확인하면서 스코프 안의 코드들을 신경쓰며 작 해야 할 것같다.