没关系。这不起作用的原因:我忘记了meteor reset
so debugger
没有机会停下来。呃!
更多信息:我正在使用Mason Chang对相关问题的回答中的方法,而不是kill -s USR1 [proc_id]
(我可以看到脚本,但无法在startup()函数中停止。)。另外,我正在使用陨石。
我正在尝试调试流星.startup(函数()) http://docs.meteor.com/#meteor_startupMeteor 服务器端的代码(即,在/server
)与节点检查器,我已经读过这个question https://stackoverflow.com/questions/11034941/meteor-debug-on-server-side,并按照答案进行更改run.js
,但不知何故,我自己的启动功能脚本没有显示在 Chrome 的脚本部分中。
如何在此处查看我的代码并设置断点并在这些点处停止?顺便说一句,Meteor_debug() 不会向 stdout、stderr 或节点检查器浏览器控制台输出任何内容。我也尝试过 console.log() 但没有成功。如何在 Meteor 服务器端启用日志记录?
如果重要的话,我就在auth
branch.
这里的代码非常简单(/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);
}
}
});
现在我知道如何做到这一点,我将回答我自己的问题,以便我们可以在此处保留此信息(详细信息):(这是基于 Mason Chang 对此的回答question https://stackoverflow.com/questions/11034941/meteor-debug-on-server-side.)
- 停止流星执行。
- Edit
/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']
to
['--debug-brk', path.join(bundle_path, 'main.js'), '--keepalive']
//--debug-brk 使新线程在第一行中断;
- Add
debugger
语句作为服务器代码中的断点;
- Run
node-inspector &
在服务器终端中。 (谷歌“node-inspector”来安装它。)
- 奔跑流星; (如果没有打开客户端窗口,则不会附加调试器,因为还没有服务器线程。)
- 刷新客户端浏览器窗口; (启动一个服务器线程,该线程将在第一行中断,并附加到
node-inspector
.)
- 打开浏览器窗口 [SERVER:8080],您的服务器代码停在第一行(
main.js
在你的[PROJECT_DIR]/.meteor/local/build
);
- 点击调试器浏览器窗口上的 RUN 按钮;取决于你的位置
debugger
声明是,您可能需要在客户端浏览器窗口中执行一些触发操作才能运行到debugger
断点。 (请注意,如果您等待太长时间才点击“运行”按钮,您的客户端窗口可能会超时,并且您必须再次刷新。)
- 现在,您可以在服务器调试器窗口中执行常规调试操作:单步调试、监视变量、在控制台中执行、查看堆栈等。
Edit:要在服务器端登录,您可以使用 Meteor._debug() 和 console.log(),它们将显示在您运行的终端中meteor
。在客户端,这些日志记录语句将输出到浏览器开发人员的控制台。工具。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)