localhost上的Node.js应用程序崩溃

时间:2017-01-05 08:27:22

标签: mysql node.js heroku

背景:

我有一个node.js + Express + MySQL应用程序。对于开发和测试,我在我的localhost上运行它,我也将它部署在作为生产方的heroku上。

问题:

每当我在我的localhost上运行应用程序时,只要我在登录表单中点击登录按钮,它就会崩溃。具体来说,它会出现以下错误:

  

TypeError:无法调用方法'查询'未定义的

这个问题与我用来连接我的数据库的mysql节点模块有关,代码如下:

connectionPool.getConnection(function(err, connection){
        if(err) {
            winston.log('debug', '------------------------------------ Error: ' + err);
            callback(err, null);
        }
        connection.query(queryString, function(err, rows){
            if (err) {
                winston.log('debug', '------------------------------------ Error: ' + err);
                callback(err, null);
            }
            connection.release();
            callback(null, rows);
        });
    });

显然,连接参数未定义,因此错误。

但在我们得出结论是我的代码是问题之前,应用程序有时也能顺利运行。它在Heroku prod网站上运行顺畅,猜猜如果我将我的wifi连接从我的家庭wifi更改为我的便携式wifi热点,它永远不会崩溃。

因此,如果我在家庭wifi上运行我的服务器10次,它将失败8并且平稳运行2次。因此,每次我必须在这个项目上工作,我必须将我的笔记本电脑重新连接到我的便携式wifi热点(这是非常昂贵的)。

我尝试将代码中的端口从8000更改为3434或5000,但它没有帮助。由于我的家庭连接,我甚至无法在locahost上测试我的应用程序,因此我非常沮丧。我有4 mbps的下载速度,对于像这样的应用来说应该足够了。还有其他网站如YouTube,Facebook正确加载(当我在heroku上运行时,更不用说这个相同的应用程序了。)

这个问题有解决办法吗?这是我的代码无法连接?

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该在print_r(explode('.', 'left.right')); print_r(explode('.', 'left.middle.right')); print_r(explode('$', '$Q$14')); 回调中立即return;之后添加callback(err, null);。这样可以防止在发生错误时继续执行。

您不希望为getConnection()回调添加类似的内容,因为无论如何将连接释放回池都很重要。