节点--debug-brk app.js无法运行

时间:2013-12-04 20:04:50

标签: javascript node.js

我正在尝试调试我的应用程序,但当我使用--debug-brk flag时,有些东西阻止了应用实际启动。

这是我的输出通常:

/usr/local/bin/node app.js
Express server listening on port 3000
Connected to database HackRegDb

当我运行--debug-brk(在代码中某个点上的断点,在初始启动时不会被击中)时会发生什么?

/usr/local/bin/node --debug-brk=59763 app.js
debugger listening on port 59763

请参阅,没有“服务器监听”部分。显然,代码是相同的,并且在吐出之前没有断点。

供参考,这是我的app.js文件:

var express = require('express')
  , routes = require('./routes')
  , members = require('./routes/members')
  , teams = require('./routes/teams')
  , http = require('http')
  , path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/members', members.list);
app.get('/teams', teams.list);
app.post('/members', members.add);
app.post('/teams', teams.add);
app.put('/members/:id', members.update);
app.put('/teams/:id', teams.update);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

我错过了什么吗?

4 个答案:

答案 0 :(得分:10)

--debug-brk=在第一行停止节点程序,这意味着它将在启动服务器之前中断。然后,您可以连接调试器并单击“继续”以运行该程序。

您可以使用--debug=启动调试器,但不能在开始时中断。因此,如果您在异步代码中的某处有debugger行,那么如果您的调试器已连接,它仍会在遇到它时中断。

答案 1 :(得分:3)

很奇怪,但这对我有所帮助。

我运行相同的命令行,但没有-brk

/usr/local/bin/node --debug=59763 app.js

该应用已成功完成。然后--debug-brk的后续运行工作正常。

/usr/local/bin/node --debug-brk=59763 app.js

答案 2 :(得分:0)

in jetbrains PhpStorm,

启动节点应用程序后,在左下角的调试工具附近。有一个闪电(异常时切换中断)。

让我取消选择那个解决我问题的选项。

答案 3 :(得分:0)

感谢所有答案。这个问题似乎已经通过JetBrains的众多更新中的一个得到了解决。我能够正确调试,现在没有问题。