Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.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
Javascript Node.js-events.js抛出器_Javascript_Node.js_Heroku - Fatal编程技术网

Javascript Node.js-events.js抛出器

Javascript Node.js-events.js抛出器,javascript,node.js,heroku,Javascript,Node.js,Heroku,在发布这个问题之前,我浏览了几个标题相同的SO帖子。他们都建议我重新启动我的应用程序。我试过了,但还是出现了错误 引发错误的代码是 app.post('/insert', function(request, response) { var connection = mySequel.createConnection(ConnectionParams); connection.connect(); var UserName = request.body.UserName;

在发布这个问题之前,我浏览了几个标题相同的SO帖子。他们都建议我重新启动我的应用程序。我试过了,但还是出现了错误

引发错误的代码是

app.post('/insert', function(request, response) {
    var connection = mySequel.createConnection(ConnectionParams);
    connection.connect();
    var UserName = request.body.UserName;
    //     insert into userrecords values ("123456",DEFAULT,DEFAULT,DEFAULT,10);
    var InsertQuery = "insert into userrecords values (" + UserName + ",DEFAULT,DEFAULT,DEFAULT,-10);";
    connection.query(InsertQuery, function(error, result, fields) {
        if (error) {
            response.send("error");
            console.log(error);
            throw error;
        } else {
            // response.send("success");
            console.log(result.insertId);
            response.send(result.insertId);
        }
    });
    connection.end();
});
代码导致的错误如下

events.js:160
2017-04-26T11:42:52.410094+00:00 app[web.1]: 
2017-04-26T11:42:52.410092+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2017-04-26T11:42:52.410096+00:00 app[web.1]: Error: Quit inactivity timeout
2017-04-26T11:42:52.410097+00:00 app[web.1]:     at Quit.<anonymous> (/app/node_modules/mysql/lib/protocol/Protocol.js:160:17)
2017-04-26T11:42:52.410093+00:00 app[web.1]:       ^
2017-04-26T11:42:52.410098+00:00 app[web.1]:     at emitNone (events.js:86:13)
2017-04-26T11:42:52.410099+00:00 app[web.1]:     at Quit._onTimeout (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:127:8)
2017-04-26T11:42:52.410099+00:00 app[web.1]:     at Quit.emit (events.js:185:7)
2017-04-26T11:42:52.410100+00:00 app[web.1]:     at ontimeout (timers.js:380:14)
2017-04-26T11:42:52.410101+00:00 app[web.1]:     at tryOnTimeout (timers.js:244:5)
2017-04-26T11:42:52.410102+00:00 app[web.1]:     at Timer.listOnTimeout (timers.js:214:5)
events.js:160
2017-04-26T11:42:52.410094+00:00应用程序[网站1]:
2017-04-26T11:42:52.410092+00:00应用程序[网站1]:投掷者;//未处理的“错误”事件
2017-04-26T11:42:52.410096+00:00应用程序[web.1]:错误:退出非活动超时
2017-04-26T11:42:52.410097+00:00应用程序[网站1]:退出时。(/app/node_modules/mysql/lib/protocol/protocol.js:160:17)
2017-04-26T11:42:52.410093+00:00应用程序[网站1]:^
2017-04-26T11:42:52.410098+00:00应用程序[web.1]:在emitNone(events.js:86:13)
2017-04-26T11:42:52.410099+00:00应用程序[web.1]:在退出时超时(/app/node\u modules/mysql/lib/protocol/sequences/Sequence.js:127:8)
2017-04-26T11:42:52.410099+00:00应用程序[web.1]:在Quit.emit(events.js:185:7)
2017-04-26T11:42:52.410100+00:00应用程序[web.1]:在ontimeout(timers.js:380:14)
2017-04-26T11:42:52.410101+00:00应用程序[web.1]:在tryOnTimeout(timers.js:244:5)
2017-04-26T11:42:52.410102+00:00应用程序[web.1]:at Timer.listOnTimeout(timers.js:214:5)
我在Heroku上托管我的应用程序,每当我尝试访问此URL时,应用程序就会崩溃,迫使我重新启动dyno。我发送的数据已成功插入数据库,但自动递增的主键未返回到我的应用程序。相反,我得到了一个服务器错误

stringify()返回正确的值一次,然后应用程序崩溃,导致后续请求失败


如何解决此问题?

在发送响应之前,请尝试将其转换为JSON

response.send(JSON.stringify(result.insertId))

我也曾经有过类似的问题,我想这就是我解决问题的方法

编辑:


我浏览了myqlnpm库,发现了一个名为
Pool
的东西。当您的应用程序一次需要处理多个请求时,将使用池。我建议你试试。有一个很好的例子

我也有同样的问题,我只是降级以作出反应-scripts@2.1.8

以下是步骤:

  • cd我的应用程序
  • npm安装响应-scripts@2.1.8
  • npm启动

  • 顺便说一句,这看起来是SQL注入的一个很好的候选。我知道…因为这让我测试了一些npm,而不是一些我没有太注意的生产级代码。如果@Kosch知道我在哪里可以学习更有效地编写此类代码,请告诉我..这只运行了一次,之后应用程序又开始崩溃,出现了相同的错误