这是代码:
var http = require('http')
var options = {
hostname: 'localhost',
method: 'POST',
port: 8000,
path: '/'
}
var s = 3;
http.request(options, (res)=>{
}).end(s+'')
http.createServer((req, res)=>{
res.writeHead(200, {'Content-type': 'text/plain'})
var a = "";
req.on('data', (data)=>{
a+= data
})
req.on('end', ()=>{
res.write(a)
res.end()
})
}).listen(8000)
为什么服务器可能会在返回值为3时向客户端返回无效信息?
答案 0 :(得分:1)
确实返回3,但在您的示例中,您没有根据请求收集它。
以下是代码的修改版本,它执行整个请求/响应,就像一个简单的回声。
var http = require('http')
var options = {
hostname: 'localhost',
method: 'POST',
port: 8000,
path: '/'
}
var s = 3;
http.request(options, (res)=>{
var str = '';
//another chunk of data has been recieved, so append it to `str`
res.on('data', function (chunk) {
str += chunk;
});
//the whole response has been recieved, so we just print it out here
res.on('end', function () {
console.log('res: ' + str);
});
}).end(s+'')
http.createServer((req, res)=>{
res.writeHead(200, {'Content-type': 'text/plain'})
var a = "";
req.on('data', (data)=>{
a+= data
})
req.on('end', ()=>{
console.log('req: ' + a)
res.write(a)
res.end()
})
}).listen(8000)
回应 - >
req: 3
res: 3
答案 1 :(得分:0)
我解决了。这是变量a的可见性问题。
var http = require('http')
var a = '';
var options = {
hostname: 'localhost',
method: 'POST',
port: 8000,
path: '/'
}
var s = 3;
http.request(options, (res)=>{
}).end(s+'')
http.createServer((req, res)=>{
res.writeHead(200, {'Content-type': 'text/plain'})
req.on('data', (data)=>{
a+= data
})
req.on('end', ()=>{
res.write(a)
res.end()
})
}).listen(8000)