meteor:在服务器端debugging
有谁知道一个好的方法来debugging服务器端代码? 我试过启用Node.jsdebugging,然后使用节点检查器,但它不显示任何我的代码。
我最终使用console.log,但这是非常低效的。
更新:我发现以下过程在我的Linux机器上工作:
-
当你运行Meteor时,它会产生两个进程
process1:/ usr / lib / meteor / bin / node /usr/lib/meteor/app/meteor/meteor.js
process2:/ usr / lib / meteor / bin / node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js –keepalive
-
您需要在process2上发送kill -s USR1
-
运行节点检查器,你可以看到你的服务器代码
在我第一次尝试时,我修改了/ usr / lib / meteor / bin / meteor中的meteor启动脚本的最后一行到
exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"
并在命令提示符下运行NODE_DEBUG=--debug meteor
。 这只在process1上放了–debug标志,所以我只能在node-inspector上看到meteor文件,并且找不到我的代码。
有人可以在Windows和Mac机器上检查这个吗?
在meteor0.5.4中,这变得更容易了:
首先从terminal运行以下命令:
npm install -g node-inspector node-inspector & export NODE_OPTIONS='--debug-brk' meteor
然后在浏览器中打开http://localhost:8080
以查看节点检查器控制台。
更新
自Meteor 1.0以来,你可以input
meteor debug
这实际上是上述命令的快捷方式,然后在您的浏览器中启动节点检查器,如上所述。
更新
在meteor1.0.2中添加了一个控制台或shell。 它可能会派上用场输出variables并在服务器上运行命令:
meteor shell
meteor应用程序是Node.js应用程序。 当使用meteor [run]
命令运行Meteor应用程序时,可以将NODE_OPTIONS
环境variablesconfiguration为以debugging模式启动node
。
NODE_OPTIONS
环境variables值的例子:
-
--debug
-
--debug=47977
– 指定一个端口 -
--debug-brk
– 在第一个声明中突破 -
--debug-brk=5858
– 指定一个端口并在第一条语句中断开
如果您export NODE_OPTIONS=--debug
,则从同一个shell运行的所有meteor
命令都将inheritance环境variables。 或者,您可以启用debugging,只需一次运行, NODE_OPTIONS="--debug=47977" meteor
。
要进行debugging,请在不同的shell中运行node-inspector
,然后转到http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>
,而不pipenode-inspector
告诉您运行的是什么。
要以debugging模式启动node.js,我这样做了:
- 打开/usr/lib/meteor/app/meteor/run.js
-
之前
nodeOptions.push(path.join(options.bundlePath, 'main.js'));
加
nodeOptions.push('--debug');
以下是附加debugging器eclipse的其他实用步骤:
- 在这里使用“–debug-brk”而不是“–debug”,因为使用eclipse作为debugging器,我更容易附加node.js。
- 添加“debugging器” 在你想debugging的代码中(我个人更喜欢这种方式)
- 在控制台中运行meteor
- 附加到eclipse中的node.js(V8工具,附加到本地主机:5858)
- 运行,等待debugging器被击中
当你在meteor应用程序文件夹中启动meteor时,你会在控制台中看到“ 在端口5858上侦听debugging器 ”。
在meteor1.0.3.1(更新到Sergey.Simonchik答案)
用meteor run --debug-port=<port-number>
启动你的服务器meteor run --debug-port=<port-number>
将浏览器指向http://localhost:6222/debug?port=<port-number>
其中<port-number>
是您指定的端口。
在你的代码中添加一个debugger;
你想在哪里设置你的断点。
取决于debugger;
被调用,它将打开检查器打开你的客户端或服务器浏览器窗口。
从Meteor 1.0.2开始,服务器端debugging的最好方法可能是直接通过新的内置shell:运行服务器运行meteor shell
。 更多信息在这里: https : //www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell
我喜欢通过GUI设置断点。 这样我不必记得从我的应用程序中删除任何debugging代码。
这是我设法做我的本地meteor应用服务器端:
meteor debug
这样开始你的应用程序。
打开Chrome到它给你的地址。 你可能需要安装https://github.com/node-inspector/node-inspector (它可能会与Meteor捆绑在一起吗?不知道)
你会看到一些怪异的内部meteor代码(不是你写的应用程序代码)。 按播放运行代码。 这段代码只是启动你的服务器来监听连接。
只有按下播放button后,才会在debugging器文件夹结构中看到一个名为“app”的新目录。 在那里有你的meteor项目文件。 在那里设置一个断点。
打开你的应用程序的本地地址 。 这将运行你的服务器端代码,你应该能够打你的断点!
注意:您必须重新打开检查器,并在每次重新启动应用程序时再次执行此过程!
我不知道为什么它不适合你。
我可以通过控制台(Mac)上的以下步骤使用它。
$ ps $ kill -s USR1 *meteor_node_process_id* $ node-inspector &
以上步骤在https://github.com/dannycoates/node-inspector中提及。; 它用于将节点检查器连接到正在运行的节点进程。
我写了一个名为meteor-inspector的小型meteor包,它简化了节点检测器debuggingmeteor应用程序的使用。 它在内部pipe理节点检查器的生命周期,因此用户不需要在某些文件发生更改后手动重新启动debugging器。
有关更多详细信息和具体使用说明,请查看https://github.com/broth-eu/meteor-inspector 。
WebStorm是开放源码开发人员免费使用的强大的IDE,使得debugging服务器端变得更容易。
我已经在Windows上进行了testing,configuration是无痛的 – 看到我的答案 。
解决我的问题的检查员是meteor服务器控制台。 以下是我遵循的安装过程:
-
在您的项目文件夹中,添加智能软件包
server-eval
:mrt add server-eval
对于meteor1.0:
meteor add gandev:server-eval
-
重新开始meteor。
- 从这里下载
crx
Chrome扩展文件。 - 在Chrome中打开扩展页面,然后将
crx
文件拖到扩展页面。 - 重新启动Chrome。
-
检查networking检查员,以评估服务器端代码:
与节点检查员相比,我有更清晰的输出。
对于meteor1.3.5.2,运行
meteor debug –debug-port 5858 + n是一个非零的数字,这将导致节点检查员使用8080 + n作为web端口。
如果你喜欢使用nodeJS的官方debugging器,你可以调用NODE_OPTIONS='--debug' meteor
,然后(在不同的shell) node debug localhost:5858
。