应要求关闭响应。on('end')

时间:2019-06-23 12:00:19

标签: node.js http post

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

0 个答案:

没有答案