Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express在重新加载页面10次后停止工作_Node.js_Express - Fatal编程技术网

Node.js Express在重新加载页面10次后停止工作

Node.js Express在重新加载页面10次后停止工作,node.js,express,Node.js,Express,我正在使用express作为节点的Web服务器,一切似乎都正常工作。我遇到的唯一问题是,我反复加载特定页面(“/learn”路径)10次。一旦我这样做,express似乎停止工作,尽管控制台上没有记录任何错误,页面上也没有显示任何错误。它只是一直在浏览器中等待主机。奇怪的是,如果我从有问题的页面转到另一个页面,然后再返回,问题就不会发生。我想重复多少就重复多少,没有错误。以下是我解决问题的路线: var bcrypt = require('bcrypt'); var pool = require

我正在使用express作为节点的Web服务器,一切似乎都正常工作。我遇到的唯一问题是,我反复加载特定页面(“/learn”路径)10次。一旦我这样做,express似乎停止工作,尽管控制台上没有记录任何错误,页面上也没有显示任何错误。它只是一直在浏览器中等待主机。奇怪的是,如果我从有问题的页面转到另一个页面,然后再返回,问题就不会发生。我想重复多少就重复多少,没有错误。以下是我解决问题的路线:

var bcrypt = require('bcrypt');
var pool = require('../database.js').pool;


module.exports = function(app) {
    app.get('/learn', function(req, res, next) {
        var query = 'SELECT * FROM questions INNER JOIN answers ON questions.questionID = answers.questionID';
        pool.getConnection(function(err, connection) {
            connection.query(query, function(err, rows) {
                if (err) {
                    throw err;
                }

                var data = {
                    name: req.session.name,
                    problems: rows,
                };

                res.render('learn.html', data);
            });
        });
    });

    app.post('/learn/checkAnswer', function(req, res) {
        //get posted form data
        var questionID = req.body.questionID;
        var selectedAnswer = req.body.selectedAnswer;

        //query database
        pool.getConnection(function(err, connection) {
            var query = connection.query('SELECT correctAnswer FROM questions WHERE questionID = ?', questionID, function(err, rows) {
                res.send({
                    correctAnswer: rows[0].correctAnswer
                });
            });
        });
    });
};
我不确定这是否有什么不同,但我使用Handlebar作为我的渲染引擎,而不是jade,以及数据库的节点mysql。

10。由于您没有结束使用
pool.getConnection
检索到的连接,因此第11个请求将无限期地等待空闲连接

易于修复:

connection.query(query, function(err, rows) {
  connection.end(); // end the connection as soon as possible,
                    // so it's returned to the pool and can be reused.
  if (err) ...
});

serializeUser
通常仅在用户成功登录后调用(用于创建存储在会话中的对象)。可能是您的会话过期太快了,但也许发布一个新问题更合适:)