javascript - Node.js - events.js 抛出错误

标签 javascript node.js heroku

在发布这个问题之前,我浏览了几篇标题相同的 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 时,该应用程序就会崩溃,迫使我重新启动测功机。我发送的数据已成功插入数据库,但自动递增的主键未返回到我的应用程序。相反,我收到服务器错误。

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

我该如何解决这个问题?

最佳答案

在发送之前尝试将您的响应转换为 JSON。

喜欢

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

我也曾经遇到过类似的问题,我想我就是这样解决的。

编辑:

我浏览了 myql npm 库并找到了一个叫做 Pool 的东西。当您的应用程序需要一次处理多个请求时,可以使用池。我建议你试试看。有一个很好的例子availble here.

关于javascript - Node.js - events.js 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43633828/

相关文章:

javascript - Paperjs SVG 导入 : How to access group id's

javascript - 在 react-native 中关闭应用程序之前的最后一个方法(或函数)

javascript - Node.JS MySQL 连接超时

javascript - 在nodejs中开发报告引擎

node.js - 如何在 node.js 中设置默认时区?

javascript - 上一个按钮导致幻灯片消失

javascript - 需要限制较少的 json 解析器

python - 在 Heroku 上托管时,Selenium 应用程序重定向到 Cloudflare 页面

web-services - 在隔离的微服务之间共享数据

node.js - 如何在 Heroku 上同时拥有 HTTP 和 TCP 服务器