Node --debug-brk app.js未正常运行

5

我正在尝试调试我的应用程序,但是当我使用--debug-brk标志时,某些东西阻止该应用程序实际启动。

这是我的正常输出:

/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

看,没有“server listening”这一部分。显然代码是相同的,并且在那之前没有断点。

供参考,这是我的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'));
});

我有什么遗漏吗?


你找到问题的原因了吗?我也遇到了完全相同的问题,但是在本地运行cloud9。 - GameScripting
4个回答

10

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

你可以使用--debug=来启动调试器但不会在开头中断。所以如果你在异步代码中有一个debugger语句,当它遇到它时,它仍然会中断,如果你的调试器已连接。


这似乎没有帮助,我正在与JetBrains讨论此问题,因为它应该是内置的(而且我不应该真正了解这些标志)。感谢您的回答。 - Chris

3

可能有些奇怪,但这就是帮助我的方法。

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

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

应用程序已成功完成。随后运行--debug-brk的操作也正常工作。
/usr/local/bin/node --debug-brk=59763 app.js

0

感谢所有的回答。问题似乎已经通过JetBrains的多个更新之一得到了解决。现在我能够正常地进行调试而没有任何问题。


0
在JetBrains PhpStorm中,
启动您的Node应用程序后,在左下角的调试工具附近有一个闪电图标(切换异常断点)。
对我来说,取消选择该选项解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接