我有这段代码:
var app = require('http').createServer(function(req, res){
console.log(req);
req.addListener('end', function () {
fileServer.serve(req, res);
});
});
var statics = require('node-static');
var fileServer = new statics.Server('./');
app.listen(1344, '127.0.0.1');
app.on('error', function(err){
console.log(err);
})
它运行得很好,直到我做了一些更改,节点发出错误,当我回去时,那个错误不再存在,但是它没有像{{1}那样工作事件未被触发。因此,end
内的任何内容都不会被调用。
即使我运行另一个使用相同事件的node.js,也不会被激活。因此,如果请求的结束事件被破坏了。但是怎么可能呢?
这不是第一次发生。上次我最终重新安装节点(尝试了很多不同的东西后)。我更愿意找到解决方案,所以我能理解这个问题!
注意:原始代码包括socket.io和其他类型的连接,但是我只是粘贴了应用程序被卡住的代码片段。
了解如何调试问题也很有用!
答案 0 :(得分:13)
end
事件,您必须将监听器附加到data
事件,或者您必须致电stream.resume()
。
require('http').createServer(function(req, res){
req.addListener('end', function () {
// won't ever get called in node v0.10.3
});
});
require('http').createServer(function(req, res){
req.addListener('end', function () {
// will get called in node v0.10.3 because we called req.resume()
});
req.resume();
});
require('http').createServer(function(req, res){
req.on('data', function (chunk) { });
req.addListener('end', function () {
// also will get called because we attached a data event listener
});
});