Node.js on(' end')流的侦听器会触发两次

时间:2016-12-11 16:50:00

标签: node.js

这是一个普通的节点练习,即使使用readable.once(" end"),每个请求的on(" end")回调也会触发两次。这是代码:

require("http").createServer(function (req, res) {
     var readable = require("fs").createReadStream("./image.jpg",{highWaterMark:1024*1024});
     readable.on("data", function (data) {
         res.write(data);
     })

    readable.on("end", function () {
        res.end()
        console.log("Ended");
    })

}).listen(9000, function () {
    console.log("Listening.... on 9000");
});

1 个答案:

答案 0 :(得分:3)

每当您请求主目录的页面一时,就会发送2个请求" /"另一个是#34; favicon.ico" ,这就是为什么函数会触发两次,为了解决这个问题,为req.url设置一个if条件并将你想要的目录空间化,它就可以工作了。