请求不以node.js结尾(用于工作)

我有这段代码:

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); }) 

它工作的很好,直到我做了一些改变,节点给出了一个错误,当我回去时,那个错误已经不存在了,而不是在end事件没有被解雇之前工作。 所以, req.addListener('end', function (){}); 不叫。

即使我运行另一个使用相同事件的node.js,也不会被解雇。 所以就好像请求的结束事件被破坏了一样。 但是怎么可能呢?

这不是第一次发生。 最后一次我结束了重新安装节点(尝试了很多不同的事情之后)。 我宁愿find一个解决scheme,所以我可以理解这个问题!

注意:原始代码包括socket.io和其他types的连接,但我刚刚粘贴的应用程序被卡在一块代码。

知道如何debugging问题也是有用的!

@InspiredJW应该得到好评,因为我已经忘记了这一点,但毫无疑问,你的问题是因为可读stream的变化。 为了调用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 }); }); 

http://nodejs.org/api/stream.html#stream_compatibility