如何调试Node.js服务器应用程序?

现在,我主要使用如下打印语句的警报调试:

sys.puts(sys.inspect(someVariable));

必须有更好的调试方法。我知道Google Chrome有一个命令行调试器。这个调试器也适用于Node.js吗?


当前回答

Theseus是Adobe research的一个项目,它允许您在开源编辑器Brackets中调试Node.js代码。它有一些有趣的特性,如实时代码覆盖、追溯检查、异步调用树。

其他回答

作为Google Chrome开发者工具的一部分发布的V8调试器可用于调试Node.js脚本。可以在Node.js GitHub wiki中找到这一工作原理的详细说明。

我最初的反应是几年前的预视工作室。

因此,hapi使用GOOD是一个很棒的日志记录包,但要进行调试,请使用visual studio。

最初的回应(很久以前):我会使用沃尔玛实验室的GOOD。它可以完成任务,而且非常灵活:

var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();

var options = {
subscribers: {
    'console':               ['ops', 'request', 'log', 'error'],
    'http://localhost/logs': ['log']
    }
};
server.pack.require('good', options, function (err) {

    if (!err) {
        console.log('Plugin loaded successfully');
    }
});

我创建了一个名为pry.js的小工具,可以帮助您解决问题。

将一个简单的语句放在代码中的某个地方,正常运行脚本,节点将停止当前线程,从而允许您访问所有变量和函数。随意查看/编辑/删除它们!

var pry = require('pryjs')

class FizzBuzz

  run: ->
    for i in [1..100]
      output = ''
      eval(pry.it) // magic
      output += "Fizz" if i % 3 is 0
      output += "Buzz" if i % 5 is 0
      console.log output || i

  bar: ->
    10

fizz = new FizzBuzz()
fizz.run()
node-debug -p 8888 scriptFileName.js

使用--inspect标志启动节点进程。

node--检查index.js

然后打开chrome://inspect镀铬。单击“Open dedicated DevTools for Node”链接或安装此chrome扩展以轻松打开chrome DevTools。

有关详细信息,请参阅此链接