Express / Node.js页面刷新问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Express / Node.js页面刷新问题相关的知识,希望对你有一定的参考价值。
我是与服务器进行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));
}
};
});
感谢任何指针:)
答案
因此,问题很可能是从DB请求返回的错误,抛出错误(特别是在异步回调中)将不会执行任何操作,因此无法传播,因此无法处理,这意味着任何待处理的请求都将简单一直挂到他们最终超时。
处理此问题的最佳方法是调用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
});
});
});
以上是关于Express / Node.js页面刷新问题的主要内容,如果未能解决你的问题,请参考以下文章