gpt4 book ai didi

node.js + 连接 404 错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:53:13 24 4
gpt4 key购买 nike

我刚开始学习 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 错误。但是调用/success0 和 success1 是有效的。有人可以启发我为什么一个工作而另一个不工作吗?下面是我的测试客户端:


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:Cannot GET /fail0200:1404:Cannot GET /fail0200:1404:Cannot GET /fail0200:1404:Cannot GET /fail0200:1404:Cannot GET /fail0200:1

最佳答案

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

原因是 Connect 库的路由逻辑将状态(当前路由的索引)存储为函数回调中的属性。在您的测试用例中,当为第二条路由“/fail1”注册回调时,此回调会覆盖路由为“/fail0”设置的状态。因此,对 fail0 的传入请求失败。

此错误已在 this thread 中的 express 邮件列表中报告。 .

已在 this fork 中提交修复.

关于node.js + 连接 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com