我有这段代码:
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); })
它运行得很好,直到我做了一些更改,节点给出了一个错误,当我回去时,那个错误不再存在了,但是在结束事件没有被触发之前它没有工作.因此,req.addListener(‘end’,function(){});中的任何内容都不会被调用.
即使我运行另一个使用相同事件的node.js,也不会被激活.因此,如果请求的结束事件被破坏了.但是怎么可能呢?
这不是第一次发生.上次我最终重新安装节点(尝试了很多不同的东西后).我宁愿找到解决方案,所以我能理解这个问题!
注意:原始代码包括socket.io和其他类型的连接,但我只是粘贴了应用程序被卡住的代码片段.
了解如何调试问题也很有用!
解决方法
@InspiredJW应该因为我已经忘记它而得到赞扬,但毫无疑问,你的问题是由于可读流的变化.为了调用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,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 }); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。