Node.js HTTP:request';结束';事件从不被调用
我有一个客户端正在向node.js服务器发送数据块 我想监听“end”事件并检索累积的请求正文 这是我的密码:Node.js HTTP:request';结束';事件从不被调用,http,node.js,Http,Node.js,我有一个客户端正在向node.js服务器发送数据块 我想监听“end”事件并检索累积的请求正文 这是我的密码: app.post('/users', function(req, res){ req.on('end', function() { // WHY IS THIS NEVER FIRED? console.log(req.body); res.send({ "status": "ok" }); }); }); 问题是“结束”事件从未触
app.post('/users', function(req, res){
req.on('end', function() { // WHY IS THIS NEVER FIRED?
console.log(req.body);
res.send({
"status": "ok"
});
});
});
问题是“结束”事件从未触发
有人知道为什么吗
另外,如果我这样做,req.body是否将是所有body块的累加体?基本上http POST仅在您向服务器发送邮件时触发。我不能确定,但我假设您只是试图访问web浏览器中的
服务器:端口/用户
,但没有得到响应。默认情况下,web浏览器是GET
ing服务器。要解决这个问题,您有两个选择
1.如果您将app.post
更改为app.get
则当您访问/users
2.或者您可以使用表单启动post函数。例如,如果您使用GET
访问页面,则以下代码将显示一个表单。提交表单时,它将触发POST
var express = require('express'),
app = express.createServer();
app.listen(1337, "127.0.0.1");
app.get('/users',function(req,res){
res.send('<form method="post" action="/users"><input type="submit" value="Submit" /></form>');
})
app.post('/users', function(req, res){
req.on('end', function() {
console.log('success');
res.send('success!!!');
});
});
var express=require('express'),
app=express.createServer();
app.listen(1337,“127.0.0.1”);
app.get('/users',函数(req,res){
res.send(“”);
})
app.post('/users',函数(req,res){
请求on('end',function(){
console.log('success');
res.send('success!!!');
});
});
我遇到了同样的问题,并发现此讨论很有帮助:
简单地说,通过插入行:
request.on(“data”,function(){})
在
.createServer
循环内,但在请求之后。on
循环使其工作。您误解了。客户端正在触发POST请求。POST处理程序正在运行,问题是没有触发“end”事件,我不知道为什么。如果对我有效,请尝试重新安装node.js。我对形势作了最好的猜测。你发布的第一个代码也适用于我,只要我正确地发布到页面上。请你再做一些诊断。我也遇到了同样的问题-代码过去一直有效,现在经过一些升级后它停止工作了。如果不起作用,为什么你要将它标记为答案?如果我不得不大胆猜测,那就是req流被暂停,您需要使用req.on('data',savethechunks)
取消暂停(我假设您需要手动保存块)@ajsie Chris T是正确的:对于任何想要了解更多有关原因的信息的人,请参阅这里(特别是关于流动和暂停模式的部分):