如何在Meteor的服务器端调试和记录自己的代码?

Qic*_*ong 9 debugging serverside-javascript node.js node-inspector meteor

没关系.这不工作的原因:我忘了,meteor reset所以debugger也没有机会停下来.咄!

更多信息:我在Mason Chang的回答中使用了相关问题的方法,而不是kill -s USR1 [proc_id](我可以看到脚本,但无法在startup()函数中停止).另外,我正在使用陨石.

我正在尝试使用node-inspector 调试Meteor服务器端(即下)的Meteor.startup(function())代码/server,我已经阅读了这个问题,并按照更改的答案run.js,但不知何故,我自己的脚本为启动功能未显示在Chrome的脚本部分中.

如何在此处查看我的代码并设置断点并停在这些点?顺便说一下,Meteor_debug()不会向stdout,stderr或node-inspector浏览器控制台输出任何内容.我也试过console.log()但没有用.如何在Meteor服务器端启用日志记录?

如果重要,我在auth分支机构.

这里的代码非常简单(/server/bootstrap.js):

Meteor.startup(function () {
 if (Logs.find().count() === 0) {
  var data = [/*...some data...*/];
  var timestamp = (new Date()).getTime();
  Meteor._debug("timestamp: "+timestamp+", data.len: " + data.length);
  debugger;
  for (var i = 0; i < data.length; i++) {
    data[i].timestamp = timestamp++;
    var entry_id = Logs.insert(data[i]);
    Meteor._debug("entry_id: "+ entry_id);
  }
 }
});
Run Code Online (Sandbox Code Playgroud)

Qic*_*ong 10

现在我知道如何做到这一点,我将回答我自己的问题,以便我们可以在这里保留这些信息(详细信息):(这是基于Mason Chang对这个问题的回答.)

  1. 停止流星执行.
  2. 编辑/usr/lib/meteor/app/meteor/run.js(或相应run.js的陨石安装HOME//.meteorite/meteors/meteor/meteor/[LONG_HEX_CODE]/app/meteor):
    将行更改
    [path.join(bundle_path, 'main.js'), '--keepalive']

    ['--debug-brk', path.join(bundle_path, 'main.js'), '--keepalive']
    // - debug-brk使新线程在第一行中断;
  3. debugger在服务器代码中将语句添加为断点;
  4. node-inspector &在服务器终端中运行.(google"node-inspector"来安装它.)
  5. 跑流星; (如果没有打开客户端窗口,则不会附加调试器,因为还没有服务器线程.)
  6. 刷新客户端浏览窗口; (启动将在第一行中断的服务器线程,并附加到node-inspector.)
  7. 在[SERVER:8080]打开浏览器窗口,您的服务器代码在第一行(main.js在您的[PROJECT_DIR]/.meteor/local/build)中停止;
  8. 点击调试器浏览器窗口上的RUN按钮; 根据您的debugger语句的位置,您可能必须在客户端浏览器窗口中执行一些触发操作才能运行到debugger断点.(请注意,如果等待太长时间按下RUN按钮,则客户端窗口可能会超时,您必须再次刷新.)
  9. 现在,您可以在服务器调试器窗口中执行常用的调试工作:逐步执行,观察变量,在控制台中执行,查看堆栈等.

编辑:对于在服务器端登录,您可以使用Meteor._debug()和console.log(),它们将显示在您运行的终端中meteor.在客户端,这些日志记录语句将输出到浏览器开发人员的控制台.工具.

  • @Brandon:现在事情变得容易多了.请参阅[非官方流星常见问题中的调试](https://github.com/oortcloud/unofficial-meteor-faq/blob/master/README.md#how-do-i-debug-my-meteor-app)(谢谢到Kasima Tharnpipitchai).希望齐超可以更新答案. (3认同)