내일배움캠프 TIL (220223): error: illegal arguments: undefined, string

Jiumn·2023년 2월 23일
0

error: illegal arguments: undefined, string

회원가입 api를 만들고 bcryptjs로 비밀번호 암호화까지 잘 끝냈는데, 갑자기 발생한 에러.

error: illegal arguments: undefined, string

username과 password를 데이터로 전달했는데 undefined가 떴다는 건... 데이터가 정상적으로 보내지지 않는 것으로 보였다. (값을 잘못 입력했다거나 하는)

에러 메시지를 검색을 해보니 bcrypt 함수에서 암호화를 하려다가 값이 없으니 나타나는 에러인 것 같아, 근본적인 원인을 찾기 위해 bcrypt 함수를 지우고 dto에서 데이터 유효성을 확인하는 class-validator 데코레이터도 모두 지웠더니 이번에는 다른 에러가 발생했다.

Field 'username' doesn't have a default value

역시나 MySQL에서 데이터를 제대로 인식하지 못하고 있는 것으로 보였다.


해결 방법: Headers Content-Type 확인하기

코드 쪽에서는 아무리 봐도 이상한 점을 찾지 못했다. 결국 api 테스트 프로그램에 문제가 있나 싶어서 다른 프로그램(thunder client)으로 해봤더니 정상 작동하는 것이었다. (;;)

원인을 찾기 위해 다시 원래 쓰고 있던 insomnia로 돌아와 살펴봤다.

데이터 형식은 JSON으로 잘 보내주고 있었다.

그런데 Headers쪽이 뭔가 쎄하다...

(!!)

Headers의 Content-Type이 비어 있었다. ㅠㅠ

Content-Type을 application/json으로 바꿔줬더니 정상 작동한다.

JSON 형태로 request를 보내는 경우 Headers의 Content-Type을 applicaiton/json으로 설정해줘야 한다.

(전달할 데이터 형식을 지정하면 insomnia에서 자동으로 Headers를 해당 타입으로 변경시켜주는데 아무래도 잘못 눌러서 삭제가 된 듯)

어쩐지 다른 API들은 데이터를 정상적으로 저장하고 있었는데 회원가입 API만 문제가 발생하는 게 이상했다. insomnia 쓰시는 분들 손가락 이슈 조심하시길 ^_ㅠ

profile
Back-End Wep Developer. 꾸준함이 능력이다. Node.js, React.js를 주로 다룹니다.

0개의 댓글