nodejs或expressjs在没有返回响应时重复调用route

时间:2015-02-25 17:01:29

标签: javascript node.js express

我正在使用expressjs。我的问题是,如果由于某种原因我没有提供回复,则会再次调用路由。在firebug中,请求的状态将是" pending"。最后,在第二次调用该路由后,我收到了回复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秒后再次看到。{/ p>

似乎Express或Node以某种方式导致路线第二次运行。为什么会这样,以及如何防止它?

编辑:做了一个简单的测试来证明问题。

2 个答案:

答案 0 :(得分:0)

对于大多数人来说,这可能不是解决方案,但我正在使用 create-react-app 构建一个站点,并且我在两个选项卡中打开了该应用程序。出于某种原因,即使我只与一个选项卡进行交互,这也会导致快递方面出现重复请求。

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

答案 1 :(得分:-1)

// 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');
});