gpt4 book ai didi

javascript - Node js找不到响应主体http createserver

转载 作者:可可西里 更新时间:2023-11-01 17:07:31 25 4
gpt4 key购买 nike

我在 Node 中运行这个脚本:

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

Goodbye World

到目前为止一切顺利,但我试图了解数据(“Hello World/nGoodbyeWorld”)在响应对象中的位置。这就是为什么我将 'console.log(response.body)' 作为 response.end() 中的回调( Node http 文档说回调将在响应完成流式传输时执行)。但是 console.log 只给出“未定义”。当我 console.log 整个响应对象时,它 console.logs 响应对象正常,但我看不到其中的任何数据或正文,即使它具有“hasBody:true”。

那么问题是:

a) 是否有 response.body?我认为必须有一个,否则浏览器窗口中不会显示任何内容。b) 如果可以,我该如何访问它,为什么我的方法不起作用?

我能找到的最接近的答案是这个:Where is body in a nodejs http.get response? ,但我尝试添加

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

,正如那里所建议的那样,但它没有用。此外,那里的人只是回答您如何访问数据,而不是为什么 response.body 不容易访问。

谢谢

最佳答案

没有响应主体,您写入响应流的数据只是在写入时发送给客户端(大部分情况下)。将所有写入响应的内容都保存在内存中是没有意义的。

请求也是如此。如果需要,您必须自己缓冲传入的数据,这不是在幕后完成的,它只是流入。

关于javascript - Node js找不到响应主体http createserver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com