카테고리 없음

[내배캠 TIL ] 8주차 목요일 :: 스코프 오류

두캔두잇 2023. 7. 7. 01:32

코드를 작성하면서 오늘 처음으로 스코프안에 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에 하나의 요청에 두 개의 응답이 들어가서 그렇다.

 

앞으로 코드를 작성할 때 스코프의 대한 개념도 확인하면서 스코프 안의 코드들을 신경쓰며 작 해야 할 것같다.