功能失败'默默地'语法完美 - 我该如何调试?

时间:2014-03-17 00:05:37

标签: javascript node.js debugging error-handling

调试静默JS函数失败


我写了一个Node连接函数,它成功连接,将数据插入数据库,但后来无法执行我的代码处理任何进一步的错误。

在这种情况下我该如何调试?


这是我的相关脚本:

var connection = createConnection();

connection.connect(function (err) {
    if (err) return callback(new Error('Failed to connect'), null);
    console.log('[Post]Connection with the officeball MySQL database opened...');

    connection.query(
        'INSERT INTO `officeball`.`sales_entries` SET category = ?, `group` = ?, date = ?, price = ?, customer = ?, seller = ?, commission = ?',
    salesData),

    function (err, rows, fields) {

        if (err) console.log(err);
        connection.destroy();
        console.log('[Post]...Connection with the officeball MySQL database closed.');

    }
});

这是我的控制台输出:

Application initializing...
Application successfully initialized!
Server running at http://127.0.0.1:8080/
User username1 is attempting to validate for a hit...
Connection with the Officeball MySQL database openned...
...Connection with the Officeball MySQL database closed.
User username1 validated and is ready!
[Post] Connection with the officeball MySQL database opened...

注意:您会注意到日志中有两个连接,第一个连接成功打开和关闭。这是验证。第二个连接未关闭,是由上述脚本启动的连接。

由于日志清楚地显示没有致命错误,您可以假设此处的所有内容都已正确定义。这是我直到现在还没有遇到的问题。通常,如果函数失败,程序结束会导致非常特定的错误。

1 个答案:

答案 0 :(得分:0)

正如Aaron所说,在“salesData”之后删除“)”并在“}”之后添加8行。如果您要将RDB与节点一起使用,请选中https://github.com/luciotato/waitforhttps://github.com/luciotato/LiteScript

var connection = createConnection();

connection.connect(function (err) {
    if (err) return callback(new Error('Failed to connect'), null);
    console.log('[Post]Connection with the officeball MySQL database opened...');

    connection.query(
        'INSERT INTO `officeball`.`sales_entries` SET category = ?, `group` = ?, date = ?, price = ?, customer = ?, seller = ?, commission = ?',
    salesData, function (err, rows, fields) {

        if (err) console.log(err);
        connection.destroy();
        console.log('[Post]...Connection with the officeball MySQL database closed.');

    });
});

另请阅读亚伦第二评论:

  

我强烈建议安装并运行jshint。对于你在这里发布的片段,它抱怨:“第17行,第5栏,预期作业或函数调用,而是看到一个表达式。”这是永远不会在任何地方传递的匿名函数。 - 亚伦杜福尔