无法使用node-inspector调试匿名函数

时间:2015-10-16 21:13:46

标签: javascript node.js debugging node-inspector

以下是我尝试使用node-inspector调试器的简单演示服务器程序:

var http = require('http');
var fs = require('fs');

http.createServer(function(req, res) {

    res.writeHead(200, { 'Content-Type': 'text/html' });
    var html = fs.readFileSync(__dirname + '/index.htm', 'utf8');
    var message = 'Hello world...';
    html = html.replace('{Message}', message);
    res.end(html);

}).listen(1337, '127.0.0.1');

尽我所能,我不能让node-inspector在传递的匿名函数中设置一个断点(或者使用调试器语句)到http.createServer(...)函数调用。我可以在第一行(例如,var http = require ...)第二行和第四行(http.createServer ...)上设置断点,但不在传递的匿名函数内。

首先我尝试拔出匿名函数并创建了一个函数表达式,如下所示:

var callback = function(req, res) {
  ...
}

并将其传递给

http.createServer(callback).listen(1337, '127.0.0.1');

这也行不通。

最后,我尝试命名这样的函数:

var http = require('http');
var fs = require('fs');

function callback(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    var html = fs.readFileSync(__dirname + '/index.htm', 'utf8');
    var message = 'Hello world...';
    html = html.replace('{Message}', message);
    res.end(html);
}

http.createServer(callback).listen(1337, '127.0.0.1');

这就像一个魅力!

如果这是节点检查员的固有限制,那么这是一个严重的问题。我希望有人可以向我展示一种更简单的调试方法,而不是必须提取匿名函数并在全局范围内命名它们?

0 个答案:

没有答案