在发布这个问题之前,我经历了几个带有相同标题的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)
我在Heroku上托管我的应用程序,每当我尝试访问此URL时,应用程序崩溃,迫使我重新启动dyno。我发送的数据已成功插入到数据库中,但自动递增的主键未返回到我的应用程序。相反,我收到服务器错误。
JSON.stringify()返回正确的值一次,之后应用程序崩溃,导致后续请求失败。
我该如何解决这个问题?
答案 0 :(得分:2)
尝试在发送之前将响应转换为JSON。
喜欢
response.send(JSON.stringify(result.insertId));
我也遇到过类似的问题,我认为这就是我解决问题的方法。
编辑:
我浏览了myql npm库并找到了一个名为Pool
的东西。当您的应用需要一次处理多个请求时,将使用池。我建议你尝试一下。有一个很好的例子availble here.
答案 1 :(得分:0)
我有同样的问题,我只是降级到react-scripts@2.1.8
这是步骤:
cd my-app
npm install react-scripts@2.1.8
npm start