我是与服务器上的Web开发相关的初学者(仅参加uni课程中的一门课程)。我有一个与GET请求有关的怪异问题,如果我刷新太多次,它将停止发送。这是npm start正常运行时的输出:
GET / 304 0.350 ms - -
GET /stylesheets/styles.css 404 28.359 ms - 1132
GET /javascripts/scripts.js 304 0.244 ms - -
GET /favicon.ico 404 11.692 ms - 1132
GET /skaterSummary.json 304 51.770 ms - -
大量垃圾邮件刷新后,输出如下:
GET /skaterSummary.json - - ms - -
GET / 304 0.676 ms - -
GET /stylesheets/styles.css 404 28.628 ms - 1132
GET /javascripts/scripts.js 304 0.599 ms - -
GET /favicon.ico 404 20.098 ms - 1132
代码:routes / index.js
// Database Testing
router.get('/skaterSummary.json', function(req, res, next) {
req.pool.getConnection(function(err, connection) {
if (err) throw err;
var query = "SELECT * from Summary;";
connection.query(query, function(err, results) {
res.json(results); // send response
});
});
});
代码:scripts.js
$(document).ready(function() {
'use strict';
let xhttp = new XMLHttpRequest();
xhttp.open('GET', 'skaterSummary.json', true);
xhttp.setRequestHeader('Content-type', 'application/json');
xhttp.send();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log("Success");
console.log(JSON.parse(xhttp.responseText));
}
};
});
感谢任何指针:)
答案 0 :(得分:0)
因此,问题很可能是来自任何一个数据库请求的错误,抛出错误(尤其是在异步回调中)将无济于事,不会传播,因此无法处理,这意味着任何未决请求将一直挂起,直到最终超时。
处理此问题的最佳方法是调用next
并将错误传递给Express,然后可以添加自己的自定义错误处理程序或利用Express中的默认错误处理程序
router.get('/skaterSummary.json', function(req, res, next) {
req.pool.getConnection(function(err, connection) {
if (err) {
console.error(err); // log the DB error internally
return next(new Error('Server Error')); // return a client error
}
var query = "SELECT * from Summary;";
connection.query(query, function(err, results) {
if (err) {
console.error(err);
return next(new Error('Server Error'));
}
res.json(results); // send response
});
});
});