Javascript Node.js-events.js抛出器
在发布这个问题之前,我浏览了几个标题相同的SO帖子。他们都建议我重新启动我的应用程序。我试过了,但还是出现了错误 引发错误的代码是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;
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知道我在哪里可以学习更有效地编写此类代码,请告诉我..这只运行了一次,之后应用程序又开始崩溃,出现了相同的错误