bodyParser 관련 삽질기

koajs 웹 어플리케이션에 간단한 인증을 붙이기 위해 작업 중 계속 아래와 같은 알 수 없는 오류가 발생하였다.

Error: request size did not match content length
at IncomingMessage.onEnd (/work/node_modules/raw-body/index.js:298:12)
at emitNone (events.js:86:13)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:975:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)

한참 삽질 끝에 얼마 전 추가한 koa-bodyparser의 설정을 잘 못 한 것이 원인이라는 것을 알게 되었다. 모든 요청이 json기반이라 클라이언트 측에 Content-Type을 명시하지 않고 서버 측에서 무조건 json으로 인식하게 하려고 아래와 같은 코드를 넣었었는데...

app.use(bodyParser({ detectJSON: () => true }));

요청의 body가 없는 경우에도 강제로 json 파싱을 시도하려 한 것 같다. 꼼수 코드는 제거하고 Content-Type을 넣는 것으로 해결.