有谁知道调试服务器端代码的好方法? 我尝试启用Node.js调试然后使用node-inspector但它没有显示我的任何代码。
我最终使用的是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
运行node-inspector,您可以看到您的服务器代码
在我第一次尝试时,我修改/ 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机上查看吗?
答案 0 :(得分:88)
在流星0.5.4中,这变得容易多了:
首先从终端运行以下命令:
npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor
然后在浏览器中打开http://localhost:8080
以查看节点检查器控制台。
<强>更新强>
自Meteor 1.0起,您只需输入
即可meteor debug
本质上是上述命令的快捷方式,然后如上所述在浏览器中启动节点检查器。
<强>更新强>
在Meteor 1.0.2中添加了一个控制台或shell。在服务器上输出变量和运行命令可能会派上用场:
meteor shell
答案 1 :(得分:16)
Meteor应用程序是Node.js应用程序。使用meteor [run]
命令运行Meteor应用程序时,您可以configure the NODE_OPTIONS
environment variable to start node
in debug mode。
NODE_OPTIONS
环境变量值的示例:
--debug
--debug=47977
- 指定端口--debug-brk
- 打破第一个声明--debug-brk=5858
- 在第一个语句中指定端口并中断如果您export NODE_OPTIONS=--debug
,则从同一shell运行的所有meteor
命令都将继承环境变量。或者,您可以使用NODE_OPTIONS="--debug=47977" meteor
启用一次运行调试。
要进行调试,请在其他shell中运行node-inspector
,然后转到http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>
,无论node-inspector
告诉您运行什么。
答案 2 :(得分:10)
要在调试模式下启动node.js,我这样做了:
之前
nodeOptions.push(path.join(options.bundlePath, 'main.js'));
添加
nodeOptions.push('--debug');
以下是附加调试器eclipse的其他实用步骤:
当你在meteor应用程序文件夹中启动meteor时,你会看到&#34; 调试器正在侦听端口5858 &#34;在控制台中。
答案 3 :(得分:10)
On Meteor 1.0.3.1(更新至Sergey.Simonchik答案)
使用meteor run --debug-port=<port-number>
将浏览器指向http://localhost:6222/debug?port=<port-number>
<port-number>
是您指定的端口。
在您的代码中添加要设置断点的debugger;
。
根据调用debugger;
的位置,它将在打开检查器的客户端或服务器浏览器窗口中断。
答案 4 :(得分:7)
我喜欢通过GUI设置断点。这样我就不必记得从我的应用程序中删除任何调试代码。
这就是我设法为我的本地流星应用程序做服务器端的方法:
meteor debug
以这种方式启动您的应用。
将Chrome打开到它为您提供的地址。您可能需要安装https://github.com/node-inspector/node-inspector(它现在可能与Meteor捆绑在一起?不确定)
你会看到一些奇怪的内部流星代码(不是你写的应用代码)。 按播放运行代码。此代码只是启动服务器以侦听连接。
只有在按下播放后,您才会在调试器文件夹结构中看到名为“app”的新目录。在你的流星项目文件中。在那里设置一个你想要的断点。
打开应用的本地地址。这将运行您的服务器端代码,您应该能够达到断点!
注意:您必须重新打开检查器,并在每次重新启动应用程序时再次执行此过程!
答案 5 :(得分:6)
从Meteor 1.0.2开始,服务器端调试的最佳方式可能是直接通过新的内置shell:运行服务器运行meteor shell
。更多信息:https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell
答案 6 :(得分:5)
我不确定为什么它不适合你。
我可以按照控制台(Mac)上的步骤使用它。
$ ps
$ kill -s USR1 *meteor_node_process_id*
$ node-inspector &
https://github.com/dannycoates/node-inspector上提到了上述步骤。它用于将node-inspector附加到正在运行的节点进程。
答案 7 :(得分:4)
我编写了一个名为 meteor-inspector 的小型流星程序包,它简化了使用node-inspector调试流星应用程序的过程。它在内部管理节点检查器的生命周期,因此,在某些文件发生更改后,用户无需手动重新启动调试器。
有关详细信息和具体使用说明,请查看https://github.com/broth-eu/meteor-inspector。
答案 8 :(得分:4)
对于meteor 1.3.5.2,运行
meteor debug --debug-port 5858 + n n是一个非零数字,这将导致节点检查员使用8080 + n作为Web端口。
答案 9 :(得分:3)
答案 10 :(得分:3)
解决我的问题的检查员是流星服务器控制台。以下是我安装它的过程:
在项目文件夹中,添加智能包server-eval
:
mrt add server-eval
对于流星1.0:
meteor add gandev:server-eval
重新启动流星。
crx
Chrome扩展程序文件。crx
文件拖到扩展程序页面。检查Web检查器以获取eval服务器端代码:
与节点检查员相比,我有更清晰的输出。
答案 11 :(得分:2)
如果您更喜欢使用nodeJS' official debugger,则可以拨打NODE_OPTIONS='--debug' meteor
然后(在另一个shell上)node debug localhost:5858
。