nodejs或expressjs在没有返回响应的情况下重复调用路由

nodejs or expressjs is repeating calls to route when no response is returned

本文关键字:情况下 路由 调用 响应 返回 expressjs nodejs      更新时间:2024-05-24

我使用的是expressjs。我的问题是,如果出于某种原因,我没有提供回应,就会再次调用一条路线。在firebug中,请求的状态将是"挂起"。最终,在第二次调用路由之后,我得到了一个响应ERR_EMPTY_RESPONSE

这里有一个简单的测试:

// main.html
<html>
<body>
    <span>test</span>
</body>
</html>
<script>
    $.get("/test");
</script>
// app.js
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/public'));

app.get('/test', function(req, res) {
    console.log("I'm called");
});
http.listen(3000, function() {
    console.log('Express started');
});

当你到达路线时,你会看到I'm called,然后在大约15-20秒后再次看到。

Express或Node似乎以某种方式导致了路线的第二次运行。为什么会发生这种情况,如何预防?

编辑:做了一个简单的测试演示问题。

这可能不是大多数人的解决方案,但我正在开发一个使用create-react应用程序构建的网站,我在两个选项卡中打开了该应用程序。出于某种原因,这导致了快递方面的重复请求,尽管我只与一个选项卡交互

奇怪,但关闭第二个选项卡解决了问题。

// main.html
<html>
<body>
    <span>test</span>
</body>
</html>
<script>
    $.get("/test");
</script>
// app.js
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/public'));

app.get('/test', function(req, res) {
    res.send("I'm called"); // you have to res.send() method 
});
http.listen(3000, function() {
    console.log('Express started');
});