Express-MySQL conn.end()未运行(调用quit后无法排队)

Express-MySQL conn.end()未运行(调用quit后无法排队),mysql,node.js,express,passport.js,Mysql,Node.js,Express,Passport.js,我已经读过这篇文章了,conn.end()在我的查询块中 我的问题是我的dashboard.js中的conn.end不工作,导致应用程序中断,出现以下错误 我需要使用它,因为MySQL连接正在淹没系统,直到数据库停止接受更多的连接,因为每次使用时它们都保持打开状态 在这篇文章中,我将只使用我的NodeJS应用程序的几个路由中的一个(dashboard.js) `Event.js` is not a part of my working files, probably is a file from

我已经读过这篇文章了,
conn.end()
在我的查询块中

我的问题是我的
dashboard.js
中的
conn.end
不工作,导致应用程序中断,出现以下错误

我需要使用它,因为MySQL连接正在淹没系统,直到数据库停止接受更多的连接,因为每次使用时它们都保持打开状态

在这篇文章中,我将只使用我的NodeJS应用程序的几个路由中的一个(
dashboard.js

`Event.js` is not a part of my working files, probably is a file from `./node_modules`

|events.js:183 
      throw er; // Unhandled 'error' event
      ^

Error: Cannot enqueue Quit after invoking quit.
    at Protocol._validateEnqueue (E:\NodeJS\Project-Change\node_modules\mysql\lib\protocol\Protocol.js:204:16)
    at Protocol._enqueue (E:\NodeJS\Project-Change\node_modules\mysql\lib\protocol\Protocol.js:139:13)
    at Protocol.quit (E:\NodeJS\Project-Change\node_modules\mysql\lib\protocol\Protocol.js:92:23)
    at Connection.end (E:\NodeJS\Project-Change\node_modules\mysql\lib\Connection.js:249:18)
    at ServerResponse.res.end (E:\NodeJS\Project-Change\node_modules\express-myconnection\lib\express-myconnection.js:114:54)
    at ServerResponse.send (E:\NodeJS\Project-Change\node_modules\express\lib\response.js:191:8)
    at fn (E:\NodeJS\Project-Change\node_modules\express\lib\response.js:896:10)
    at View.exports.renderFile [as engine] (E:\NodeJS\Project-Change\node_modules\ejs\lib\ejs.js:323:3)
    at View.render (E:\NodeJS\Project-Change\node_modules\express\lib\view.js:76:8)
    at Function.app.render (E:\NodeJS\Project-Change\node_modules\express\lib\application.js:527:10)
    at ServerResponse.res.render (E:\NodeJS\Project-Change\node_modules\express\lib\response.js:900:7)
    at Query._callback (E:\NodeJS\Project-Change\routes\dashboard.js:39:17)
    at Query.Sequence.end (E:\NodeJS\Project-Change\node_modules\mysql\lib\protocol\sequences\Sequence.js:88:24)
    at Query._handleFinalResultPacket (E:\NodeJS\Project-Change\node_modules\mysql\lib\protocol\sequences\Query.js:139:8)
    at Query.EofPacket (E:\NodeJS\Project-Change\node_modules\mysql\lib\protocol\sequences\Query.js:123:8)
    at Protocol._parsePacket (E:\NodeJS\Project-Change\node_modules\mysql\lib\protocol\Protocol.js:279:23)
app.js(仅限相对行)

路由/dashboard.js(路由)

config/db.js

config/passport.js


需要外部演示以备不时之需

在运行带有connection.end.的“try/catch”块之前,请检查连接是否打开。我在
req.getConnection(function(err,conn){console.log(conn.state,conn.threadId)之后插入了
dashboard.js
,然后检查连接是否打开…
-结果:
authenticated 2856
-但是,如果有问题,
dashboard.js
路由是在用户登录后呈现的初始页面in@numbtongue关于您的建议的完整代码,谢谢..不要在进程结束后调用connection.end,您可以在..@numbtha之前尝试调用它谢谢。我也试过了,没有结果,实际上没有坏结果,也没有好结果,就像它被忽略了一样。我还试着在查询之前放置
conn.connect()
,但是这样,错误变为-
在握手排队后无法排队
var express  = require('express'),
    path     = require('path'),
    bodyParser = require('body-parser'),
    app = express(),
    expressValidator = require('express-validator'),
    session = require('express-session'),
    passport = require('passport'),
    flash = require('connect-flash'),
    passportConfig = require('./config/passport'),
    dbConfig = require('./config/db');

// skipping code about static files, bodyparser, expressValidator, session, passport

passportConfig(passport)

/*MySQL connection*/
var connection  = require('express-myconnection'),
    mysql = require('mysql');

app.use(
    connection(mysql, dbConfig,'request')
);

var dashboard = require('./routes/dashboard.js'); // in this route I apply conn.end()
var router = require('./routes/rates.js');

// skipping app.post/app.get code for /login & /logout & isLoggedIn middleware

app.use('/', router);
app.use('/', dashboard); // issue on that

app.get('/',function(req,res){
    res.render('./dashboard.ejs'); //issue on that
});

module.exports = app;
var express = require('express');
var router = express.Router();

var dashboard = express.Router();

dashboard.use(function(req, res, next) {
    console.log(req.method, req.url);
    next();
});

var dashboard = router.route('/');


//show the CRUD interface | GET
dashboard.get(function(req,res,next){

    req.getConnection(function(err,conn){

        if (err) return next("Cannot Connect");

        var query = conn.query('SELECT SUM(total_price) AS transactions_total FROM transactions WHERE date_created = CURDATE(); SELECT SUM(total_profit) AS total_profit FROM transactions',  function(err,rows){


            if(err){
                console.log(err);
                return next("MySQL error, check your query");
            }

            var ab = {data:rows[0]};
            var total_profit = {data:rows[1]};

            res.render('dashboard',{ab, total_profit});

            conn.end(); // causes the described error

         });

            // conn.end(); even tried here

    });

});

dashboard.all(function(req,res,next){
    console.log("route for dashboard executed");
    console.log(req.params);
    next();
});


module.exports = router;
console.log('dashboard.js loaded!');
module.exports = {
          host     : 'localhost',
          user     : 'root',
          password : '',
          database : 'mydb',
          multipleStatements: true, 
          debug    : false
}