如何在Meteor的服务器端debugging并logging自己的代码?

没关系。 这个原因没有奏效:我忘了meteor reset所以debugger没有机会停下来。 咄!

更多信息:我正在使用方法在答复由梅森张相关的问题,而不是kill -s USR1 [proc_id] (我可以看到脚本,但不能停止在startup()函数)。 另外,我正在使用陨石。

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

如何在这里看到我的代码并设置断点并在这些点上停下来? 顺便说一句,Meteor_debug()不输出任何东西到标准输出,标准错误,或节点督察浏览器控制台。 我也试过console.log()没有用。 如何在Meteor服务器端启用日志logging?

如果有关系,我在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); } } }); 

现在我知道如何做到这一点,我会回答我自己的问题,以便我们可以在这里详细说明这个信息:(这是基于张学友对这个问题的回答)

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

    ['--debug-brk', path.join(bundle_path, 'main.js'), '--keepalive']
    // – debug-brk使新线程在第一行中断;
  3. 在您的服务器代码中添加debugger语句作为断点;
  4. 在服务器terminal中运行node-inspector & 。 (谷歌“节点检查员”来安装它。)
  5. 跑meteor (因为没有服务器线程,所以没有附加debugging器,如果没有打开客户端窗口。)
  6. 刷新客户端浏览器窗口 (启动一个将在第一行中断的服务器线程,并连接到node-inspector 。)
  7. 在[SERVER:8080]打开一个浏览器窗口,你的服务器代码停在第一行(你的[PROJECT_DIR]/.meteor/local/build main.js [PROJECT_DIR]/.meteor/local/build main.js );
  8. 点击debugging器浏览器窗口上的RUNbutton; 根据debugger语句的位置,您可能必须在客户端浏览器窗口中执行一些触发操作才能运行到debugger断点。 (请注意,如果您等待时间过长才能点击“运行”button,则客户端窗口可能会超时,而且必须再次刷新。
  9. 现在,您可以在服务器debugging器窗口中执行通常的debugging工作:逐步执行,查看variables,在控制台中执行,查看堆栈等。

编辑 :为了login服务器端,你可以使用Meteor._debug()和console.log(),它们会出现在你运行meteor的terminal。 在客户端,这些日志语句将输出到浏览器的开发者控制台。 工具。

在MacOSX上,您可以使用Chrome浏览器:

 NODE_OPTIONS="--debug-brk" meteor 

并在另一个terminal

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

然后将Chrome连接到127.0.0.1:12345/debug?port=5858

否则,使用Webstorm,只需创build一个Node.js远程debuggingconfiguration并运行它:

名称:meteor
主机:127.0.0.1
港口5858

请注意,一旦服务器启动,您需要按运行,以加载Meteor,然后暂停,以便从服务器控制台进行debugging。