node.js로 구현한 서버를 express로 리팩토링하던 도중 이런 에러가 발생했다.
post 요청시 상태코드는 문제 없이 200이 뜨는데 필요한 값이 화면에 출력되지 않았다.
확인해보니 fetch로 요청한 데이터를 응답해줄때 문제가 있는 것 같다.
에러 메시지를 읽어보면
1. Uncaught ( in promise ) : promise 문법 오류
2. is not valid JSON : 유효한 JSON 형식이 아님
요청시에는 JSON.stringfy()메서드를 사용해 JSON 형태로 요청을 보내고 있는 것을 확인했기 때문에 아마 응답시에 다시 JSON 형태로 보내주지 않아서 발생하는 에러인것같다.
해결방법 : 응답때 보내주는 데이터를 JSON.stringfy로 변환하여 해결했다
=> res.json()을 통해서 해결했다...^^
res.send(), res.json(), res.end() 모두 response를 보내는 역할을 한다.
res.send()의 경우, send에 전해진 인자에 따라서 content-type이 자동적으로 만들어진다.
res.json()의 경우, json이 아닌 것도 json 형식으로 바꾸어서 보내준다. 즉 content-type이 application/JSON으로 고정된다.
res.end()의 경우 보내줄 데이터가 없고 response를 끝내고 싶을때 사용한다. (400, 404 등 에러 처리시)
res.json()이나 res.send()의 경우에도 응답을 종료해주는 역할을 하기 때문에 두가지 메서드를 사용하더라도 명시적으로 표시할 필요는 없다.
'study > errorLog' 카테고리의 다른 글
[error] python :: SyntaxError: unterminated string literal (detected at line 1) (1) | 2024.03.05 |
---|---|
Vite에서 환경변수(.env) 사용하기 (0) | 2023.06.26 |
[errorLog] React : Cannot read properties of null (reading 'map') 에러 (0) | 2023.04.02 |
[errorLog] express req.body에 값이 들어오지 않을때 (0) | 2023.02.12 |
[errorLog - git] ! [rejected] main -> main (fetch first) 에러 및 기타 git push 관련 에러 해결 로그 (0) | 2023.01.11 |