node.js +连接404错误

我刚开始学习node.js 我有以下(服务器)示例:

var app = require("express").createServer(); app.listen(80); function fail(req, res, next) { setTimeout(next, 10); } function success() { return function(req, res, next) { setTimeout(next, 10); }; } app.get("/success0", success(), function(req, res, next) { res.send("0"); }); app.get("/success1", success(), function(req, res, next) { res.send("1"); }); app.get("/fail0", fail, function(req, res, next) { res.send("0"); }); app.get("/fail1", fail, function(req, res, next) { res.send("1"); }); 

如果我同时调用/ fail0和/ fail1,其中一个会成功,另一个会失败,并出现404错误。 调用/成功0和成功1然而工程。 有人能告诉我为什么一个人工作,而另一个不工作? 以下是我的testing客户端:

 var http = require("http"); var sys = require("sys"); for(var i = 0; i < 10; i++) { var io = http.createClient(80, "localhost"); var request = io.request("GET", "/fail" + (i%2), {host:"localhost"}); request.on("response", function(response) { var body = ""; response.on("data", function(data) { body += data; }); response.on("end", function() { sys.puts(response.statusCode + ":" + body); }); }).end(); } 

在客户端上方运行返回

 404:不能GET / fail0
 200:1
 404:不能GET / fail0
 200:1
 404:不能GET / fail0
 200:1
 404:不能GET / fail0
 200:1
 404:不能GET / fail0
 200:1

下面是这个错误的解释(以及下面的修复指针)。

原因在于Connect库的路由逻辑将状态(当前路由的索引)存储为函数callback中的一个属性。 在你的testing用例中,当callback被注册为第二个路由'/ fail1'时,这个覆盖'/ fail0'路由设置的状态。 传入的fail0请求因此失败。

这个bug在这个线程的express邮件列表中被报告。

一个修复是在这个分支中提交的。