[Express] response: Invalid status code 오류

찐찐·2022년 4월 12일
0

구글링으로 여러 해결 방법을 찾아봤는데, 사람마다 해결 방법이 달랐기 때문에 혹시나 참고가 되길 바라는 마음에 올리는 글입니다. 정답이 아닐 수도 있습니다. :)

제대로 잘 동작하고 있던 코드가 try~catch 구문 안으로 들어가자마자 오류가 났다. 처음엔 이게 왜 이러나 싶었는데, 좀 차분히 생각해보니 해결 방법을 찾을 수 있었다.

문제

오류 메시지

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code

해결 시도

원인을 모르겠어서 찾기 위해 구글링을 했더니 사람마다 해결 방법이 달라 오히려 혼란을 가중시켰다.

해결

원인 발견

  • res.send(number 값)으로 response가 보내지는 것이 뭔가 문제를 발생시키는 것 같았다.
  • mysql에서 INSERT를 한 후 나오는 insertId를 넘기고 있어서 계속해서 테스트를 해봤더니, Invalid status code의 값이 insertId와 동일하게 증가하고 있었다.

Express 공식 문서를 살펴보니 response로 보낼 수 있는 값은, Buffer, String, object, Boolean, Array만 가능했다. number 값은 response로 보낼 수 없었다!

해결

코드를 res.send({id: result:insertId});로 바꿔 object 형식으로 response를 넘기니 정상적으로 작동했다.

profile
백엔드 개발자 지망생

1개의 댓글

comment-user-thumbnail
2023년 2월 11일

혹시 마지막에 해결 방법을 좀더 설명해주실수 있을까요? 제가 프론트엔드 입문자라 아직 지식이 부족해 이해가 어렵습니다. 저도 number 처리 때문에 같은 오류 코드가 나오는데요.

app.post("/", function(req, res){

var n1 = Number(req.body.n1);
var n2 = Number(req.body.n2);

var result = n1 + n2;

res.send(result);

});

js 파일에서 이부분을 어떻게 수정해야 계산값이 도출될까요?

답글 달기