9

没关系。之所以没有成功:我忘了meteor reset,所以debugger没有机会停下来。咄!如何在Meteor的服务器端调试并记录自己的代码?

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

我试图调试在流星服务器端Meteor.startup(function())代码(即,/server下)淋巴结检查,我已阅读本question,并按照答案改变run.js,但不知何故,我自己的启动脚本函数不会显示在Chrome的脚本部分。

我怎么在这里看到我的代码,并设置断点,并停止在这些点?顺便说一句,Meteor_debug()不向stdout,stderr或节点检查器浏览器控制台输出任何内容。我也试过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); 
    } 
} 
}); 

回答

10

现在我知道如何做到这一点,我会回答我的问题,使我们能够保持该信息(以细节):(这是基于梅森张对此question的回答。)

  1. 停止流星执行。
  2. 编辑/usr/lib/meteor/app/meteor/run.js(或由陨石安装了相应run.jsHOME//.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']
    // - 调试-BRK使得在第一行中的新线程中断;
  3. 添加debugger语句作为服务器代码断点;在服务器终端
  4. 运行node-inspector &。 (谷歌“节点检查员”来安装它。)
  5. 运行流星; (这不会有调试器附加,因为没有服务器线程的是,如果你没有客户端窗口中打开。)
  6. 刷新客户端浏览器窗口; (启动服务器线程将在第一行中断,并且连接到node-inspector。)
  7. 在[SERVER:8080]处打开浏览器窗口,您的服务器代码停在第一行(中的main.js);
  8. 在调试器浏览器窗口中点击RUN按钮;取决于您的debugger语句的位置,您可能必须在客户端浏览器窗口中执行一些触发操作才能运行到debugger断点。 (请注意,如果等待时间过长,点击运行按钮,您的客户端窗口可能会超时,你必须再次刷新。)
  9. 现在你可以做平常调试东西在服务器调试窗口:步,观察变量,在控制台中执行,查看堆栈等。

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

+0

太棒了,谢谢! – huyz

+0

这是否仍然适用,因为Meteor现在支持'--debug'和'--debug-brk'? – Brandon

+3

@Brandon:现在事情变得容易多了。请参阅[非官方流星常见问题解答](https://github.com/oortcloud/unofficial-meteor-faq/blob/master/README.md#how-do-i-debug-my-meteor-app)(谢谢到Kasima Tharnpipitchai)。希望Qichao能够更新答案。 –

3

MacOSX上,你可以使用Chrome使用:

NODE_OPTIONS="--debug-brk" meteor 

而在另一端

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

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

否则,使用Webstorm,只需创建一个Node.js远程调试配置并运行它:

 
Name : Meteor 
Host : 127.0.0.1 
Port 5858 

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

相关问题