Error [ERR_STREAM_WRITE_AFTER_END]

Dongwoo Joo·2023년 4월 4일
0

Error

목록 보기
1/1

글의 순서
처음 브라우저에서 에러가 떴다.
질문을 올렸다.

브라우저 내에서의 오류가 아니라 vscode에서 콘솔 오류로 서버가 꺼질때의 오류를 보셔야 합니다.
아마 브라우저에서 오류가 발생하면 nodemon을 쓰지 않으면 서버가 꺼질겁니다.
그 때 vscode에서 터미널을 여셔서 node node server/basic-server.js 했던 터미널을 열어보면 서버가 꺼지면서 오류를 뱉어낼겁니다.
그 오류가 무엇인지 보는게 중요할 것 같습니다.

이러한 답변을 받았다.

그리고 터미널에서 아래 에러를 찾았다.

Error [ERR_STREAM_WRITE_AFTER_END]: write after end
at new NodeError (node:internal/errors:399:5)
at ServerResponse.end (node:_http_outgoing:985:15)
at Server. (/Users/dwjoo/fe-sprint-mini-node-server/server/basic-server.js:33:14)
at Server.emit (node:events:513:28)
at parserOnIncoming (node:_http_server:1072:12)
at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17)
Emitted 'error' event on ServerResponse instance at:
at emitErrorNt (node:_http_outgoing:846:9)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'ERR_STREAM_WRITE_AFTER_END'
}

이러한 에러 메시지가 떴다.
Error [ERR_STREAM_WRITE_AFTER_END]: write after end는 응답이 종료 된 후 응답을 보내려 할 때, 나오는 오류이다.

내가 작성한 코드에서,
.on('end', () => {
body = Buffer.concat(body).toString()
})

를 사용하여 데이터가 전부 받아와지면 응답하는 이벤트를 썻기때문에 이 안에서 response를 주셔야합니다.
따라서
.on('end', () => {
//이 안에 response까지 전부 추가하셔야 합니다.
})

에러 메시지에서 33번째 줄이 문제가 있는 것을 알게 되었다.
그런데 32번째 줄을 바꾸니 정상 작동 하였다.
왜지? 원래 에러코드가 1줄 위를 표시해준다고 한다.

결국 에러 메시지가 알려준다. 앞으로 vscode의 에러 메시지를 잘 확인하자.

profile
pursue nature

0개의 댓글