节点js找不到响应主体http createserver

我在节点上运行这个脚本:

var http = require('http'); var server = http.createServer(function (request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.write('Hello World\n'); response.end('Goodbye World', 'utf8', function() {console.log(response.body); }); server.listen(8000); console.log('running'); 

当我在Chrome中加载页面(localhost:8000)时,我看到:

你好,世界

世界再见

到目前为止这么好,但我试图了解响应对象中的数据('Hello World / nGoodbyeWorld')是什么。 这就是为什么我有'console.log(response.body)'作为response.end()中的callback(节点http文档说callback将在响应完成stream时执行)。 但是console.log只是给了'undefined'。 当我console.log整个响应对象它的console.logs响应对象好,但我看不到任何数据或身体在那里,即使它有'hasBody:true'。

所以问题是:

a)有没有回应? 我认为必须有一个,否则什么都不会在浏览器窗口中显示。 b)如果是这样,我怎样才能访问它,为什么我的方式不工作?

我能find的最接近的答案是这样的: nodejs http.get响应中的body在哪里? ,但我尝试添加

  response.on('data', function(chunk) { body += chunk; }); response.on('end', function() { console.log(body); }); 

,如在那里build议,它不工作。 另外,人们只是回答如何访问数据,而不是为什么响应。身体不容易访问。

谢谢

没有响应主体,写入响应stream的数据只是在写入时发送给客户端(大部分)。 记住所有写到响应中的东西是没有意义的。

请求也一样。 如果你想要,你必须自己缓冲传入的数据,这不是在幕后完成的,它只是stream入。