如何在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); } } });
现在我知道如何做到这一点,我会回答我自己的问题,以便我们可以在这里详细说明这个信息:(这是基于张学友对这个问题的回答)
- 停止meteor执行。
- 编辑
/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使新线程在第一行中断; - 在您的服务器代码中添加
debugger
语句作为断点; - 在服务器terminal中运行
node-inspector &
。 (谷歌“节点检查员”来安装它。) - 跑meteor (因为没有服务器线程,所以没有附加debugging器,如果没有打开客户端窗口。)
- 刷新客户端浏览器窗口 (启动一个将在第一行中断的服务器线程,并连接到
node-inspector
。) - 在[SERVER:8080]打开一个浏览器窗口,你的服务器代码停在第一行(你的
[PROJECT_DIR]/.meteor/local/build
main.js
[PROJECT_DIR]/.meteor/local/build
main.js
); - 点击debugging器浏览器窗口上的RUNbutton; 根据
debugger
语句的位置,您可能必须在客户端浏览器窗口中执行一些触发操作才能运行到debugger
断点。 (请注意,如果您等待时间过长才能点击“运行”button,则客户端窗口可能会超时,而且必须再次刷新。 - 现在,您可以在服务器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。