im试图在节点中实现基本的api服务器。我无法发送对后继请求的响应,因为一旦调用request.on('end'),响应就会被关闭
ive仔细尝试了几种解决方案,但它们似乎使用的是早期版本的节点
function (req, res) {
let body = ''
let json, err
req.on('data', datum => {
body += datum
if (body.length > 1e7) {
err = new Error('too big')
}
})
// response is still open here
req.on('end', () => {
// response is closed here
try {
json = JSON.parse(body)
} catch (e) {
err = new Error(e)
}
// use json
// if i try to send a response here, the response is closed
res.writeHead(200, {'Content-Type': 'application/json'})
res.write(JSON.stringify({message: 'ok'}))
})
}
我能够解析json发布请求并使用它,但是,由于出现此错误,我无法发送任何形式的响应
Error [ERR_STREAM_WRITE_AFTER_END]: write after end
已解决:
调用函数调用了res.end()
。我没有注意到它会收到请求,但是我必须等待回调或在函数中调用res.end