노드에서 if else문을 작성했는데 이런 에러 메세지가 떴다.
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
<에러전문>
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:372:5)
at ServerResponse.setHeader (node:_http_outgoing:576:11)
at ServerResponse.header (C:\Users\SJ\Desktop\elice\study\back\node_modules\express\lib\response.js:794:10)
at ServerResponse.send (C:\Users\SJ\Desktop\elice\study\back\node_modules\express\lib\response.js:174:12)
at ServerResponse.json (C:\Users\SJ\Desktop\elice\study\back\node_modules\express\lib\response.js:278:15)
at C:\Users\SJ\Desktop\elice\study\back\src\router\userRouter.js:58:21
at processTicksAndRejections (node:internal/process/task_queues:96:5)
<오류 원인> if else
if문에서 이미 결과를 보냈는데,
그 후에 else에서도 결과 값을 또 전송하려고 해서 생기는 문제인듯 하다.
즉, 이중으로 응답을 보내려고 할때 발생하는 문제이고,
"headers는 이미 클라이언트 한테 보냈는데 또 보낼수 없다" 라고 말해주는 것.
<해결방법>
if() {결과값} else{결과값} 으로 작성했던 if else문을
if() {return 결과값} else {return 결과값} 으로 return을 붙여주니 해결되었다.
이건 오류가 났던 코드
이건 수정을 해서 return을 붙인 코드. 아래처럼 return을 붙여주니 에러가 안났다.
if()
{return 결과값}
else {return 결과값}
이렇게 return을 붙여주면 된다.
'백엔드' 카테고리의 다른 글
mongodb에서 useNewUrlParser, useUnifiedTopology 쓰는 이유 (0) | 2023.07.01 |
---|---|
sessionStorage (0) | 2023.06.22 |
index.js에는 어떤 내용이 들어가야 할까? (0) | 2023.06.22 |
mysql2, post 중복가입 막기(같은 이메일로 가입 못하게 하기) (0) | 2023.06.22 |
프로젝트 프로세스 기록(JavaScript) (0) | 2023.06.22 |