以下是我尝试使用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');
这就像一个魅力!
如果这是节点检查员的固有限制,那么这是一个严重的问题。我希望有人可以向我展示一种更简单的调试方法,而不是必须提取匿名函数并在全局范围内命名它们?