没关系。 这不工作的原因:我忘了meteor reset
这样debugger
没有得到一个机会停下来。 咄!
更多信息:我使用的方法在回答由梅森畅的相关问题,而不是kill -s USR1 [proc_id]
在那里我可以看到脚本,但不能停在启动()函数)。 另外,我使用的陨石。
我试图调试Meteor.startup(函数())上的流星服务器端代码(即下/server
)淋巴结检查,我看了这个问题 ,并按照答案改变run.js
,但不知何故,我自己的启动函数脚本不会在Chrome的脚本部分显示出来。
我怎么在这里看到我的代码,并设置断点,并停止在这些点? 顺便说一句,在Meteor_debug()无法正常输出到标准输出,标准错误,或节点检查浏览器控制台。 我也试过的console.log()与无济于事。 如何启用登录流星服务器端?
如果它的事项,我是在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);
}
}
});
现在我知道如何做到这一点,我会回答我的问题,使我们能够保持这个信息(详细信息)在这里:(这是基于梅森小张的回答这个问题 。)
- 停止执行流星。
- 编辑
/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']
// - 调试BRK使得在第一行的新断线; - 添加
debugger
语句作为服务器代码断点; - 运行
node-inspector &
在服务器终端。 (谷歌“节点检查”进行安装。) - 运行流星; (这不会有附加调试器,因为没有服务器线程的是,如果你没有客户端窗口中打开。)
- 刷新客户端浏览器窗口; (启动服务器线程将打破在所述第一线,并且被连接到
node-inspector
。) - 打开在[SERVER:8080]一个浏览器窗口,服务器代码停止在第一行(
main.js
在[PROJECT_DIR]/.meteor/local/build
); - 打调试器的浏览器窗口上的运行按钮; 根据您的
debugger
语句,你可能必须做在客户端浏览器窗口中的一些触发动作运行到debugger
断点。 (请注意,如果等待时间过长,打RUN键,您的客户端窗口可能会超时,你必须再次刷新。) - 现在你可以做平常调试东西在服务器调试窗口:步,观察变量,执行控制台,看堆等。
编辑 :对于登录的服务器端,您可以使用Meteor._debug()和执行console.log(),他们会在你运行终端显示meteor
。 在客户端,这些日志记录语句将输出到浏览器的开发的控制台。 工具。
MacOSX上,你可以使用Chrome使用:
NODE_OPTIONS="--debug-brk" meteor
而在另一个终端
node-inspector --debug-port=5858 --web-port=12345
之后,Chrome连接到127.0.0.1:12345/debug?port=5858
否则有Webstorm,只需创建一个Node.js的远程调试配置并运行它:
Name : Meteor
Host : 127.0.0.1
Port 5858
需要注意的是,一旦服务器已经启动,你需要按顺序运行的流星加载,然后才能从服务器控制台调试暂停。