节点调试不起作用 - 调试器实际上没有暂停执行

时间:2015-06-30 05:35:55

标签: node.js debugging

在我的NodeJS代码中,我将debugger;放入了我想暂停的行,正如NodeJS docs

所指定的那样
...
 saveEvent(event, function(event, message) {
        console.log("Event Saved!");
        // combine
        eAll = eMen.concat(eWomen);

        debugger;
        models.Person.update({"_id": {"$in": eAll}}, {"eventsAttended": {"$push": event._id}}, function(err, updatedPeople){
            if (err) console.log(err);
            else {
                result.message          = message;
                result.event            = event;
                    callback(result);                    
                }

            })


        });   

然而,当我运行它(node debug app.js)时,控制台在到达此行时会显示某些内容,

break in C:\Users\Imray\Projects\DaProj\daproj-backend\db.js:415
 414
 415         debugger;
 416         models.Person.update({"_id": {"$in": eAll}}, {"eventsAttended": {"$push": event._id}}, function(err, updatedPeople){
 417             if (err) console.log(err);

但是当我尝试检查当前变量的值时,我收到错误

debug> eAll
ReferenceError: eAll is not defined
    at repl:1:2
    at Interface.controlEval (_debugger.js:969:21)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.emit (events.js:95:17)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
    at ReadStream.onkeypress (readline.js:99:10)
    at ReadStream.emit (events.js:98:17)
    at emitKey (readline.js:1095:12)
debug>

为什么这不按预期工作?

1 个答案:

答案 0 :(得分:1)

我没有使用过这个,但根据文档,你必须在评估任何变量之前执行'repl'命令。

因此,当它在调试器停止时执行'repl'命令然后输入'eAll'。

您绝对应该考虑使用node-inspector进行调试。