9

没关系。这不起作用的原因:我忘记了meteor reset所以debugger没有机会停下来。呸!

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

我正在尝试使用节点检查器在 Meteor 服务器端(即,在)上调试Meteor.startup(function ())/server代码,我已经阅读了这个问题,并按照答案进行了更改run.js,但不知何故,我自己的脚本启动功能不会出现在 Chrome 的脚本部分。

如何在此处查看我的代码并设置断点并在这些点处停止?顺便说一句,Meteor_debug() 不会向标准输出、标准错误或节点检查器浏览器控制台输出任何内容。我也试过 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);
  }
 }
});
4

2 回答 2

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 &在服务器终端中运行。(谷歌“节点检查器”来安装它。)
  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。在客户端,这些日志记录语句将输出到浏览器开发人员的控制台。工具。

于 2012-09-20T07:22:01.407 回答
3

On MacOSX, you can use with Chrome :

NODE_OPTIONS="--debug-brk" meteor

and in another terminal

node-inspector --debug-port=5858 --web-port=12345

Then connect Chrome to 127.0.0.1:12345/debug?port=5858

Otherwise with Webstorm, just create a Node.js Remote Debug configuration and run it :

Name : Meteor
Host : 127.0.0.1
Port 5858

Note that once the server has started, you need to press run in order for Meteor to load, and then pause in order to debug from the server console.

于 2013-10-17T23:01:51.963 回答