我正在尝试调试我的应用程序,但当我使用--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'));
});
我错过了什么吗?
答案 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的众多更新中的一个得到了解决。我能够正确调试,现在没有问题。