JavaScript/Nodejs

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

반응형

yarn start 를 했을 때 문법상 문제가 없다고 했는데,,

Request 를 보내니 갑자기 뿜어내는 해당 오류, 이 오류는 무엇인지 찾아보기로 하였습니다.

userRouter.route('/token')
  .get((req, res)=>{})
  .post((req,res)=>{
    const refreshToken = req.body.refreshToken;
    if(!refreshToken) res.sendStatus(403);
    const accessToken = token().issuance(refreshToken, res);
    res.json({accessToken : accessToken})
  })

 

제 코드의 일부 입니다.

/signup 으로 get 요청을 보내면 작동하는 부분 입니다.

하지만 , 여기서 갑작스레 Cannot set headers after they are sent to the client 에러가 발생하며 당황스럽게 하였습니다...

무엇이 문제일지 확인을 하는데 응답 코드가 두 개가 존재하여 오류가 나는거였습니다.

 

그런데 도대체 어디에서 두개인지 정말 궁금하였습니다.

응답을 하면 자동으로 요청이 return되어서 끝나는것으로 생각을 하고 있던 저는 if(!refreshToken) res.sendStatus(403); 이 코드는 문제가 없는줄 알았기에 살짝 골머리를 앓았습니다..

하지만 응답을 한다고 return 이 되지 않는다는것을 알고 위 코드를 아래와같이 수정을 하니 문제가 없어지긴 하였습니다.

userRouter.route('/token')
  .get((req, res)=>{})
  .post((req,res)=>{
    const refreshToken = req.body.refreshToken;
    if(!refreshToken) return res.sendStatus(403);
    const accessToken = token().issuance(refreshToken, res);
    res.json({accessToken : accessToken})
  })

 

 

여기서 갑자기 응답 속성의 종류는 어떤것들이 있는지 궁금하여 알아보기로 하였습니다.

http://expressjs.com/en/5x/api.html#res

 

expressjs 공식 문서를 통해 알게된 내용입니다. 정말 많은 속성들이 있더군요,,, 살짝..당황...

반응형