有谁知道调试服务器端代码的好方法?我尝试启用Node.js调试然后使用node-inspector但它没有显示我的任何代码 .
我最终使用console.log,但效率非常低 .
Update: I found the following procedure works on my Linux machine:
- 当你运行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机器上检查这个吗?
12 回答
在Meteor 0.5.4中,这变得更加容易:
首先从终端运行以下命令:
然后在浏览器中打开
http://localhost:8080
以查看节点检查器控制台 .Update
从Meteor 1.0开始,你可以输入
这实际上是上述命令的快捷方式,然后如上所述在浏览器中启动节点检查器 .
Update
在Meteor 1.0.2中添加了一个控制台或shell . 在服务器上输出变量和运行命令可能会派上用场:
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
告诉您运行什么 .要在调试模式下启动node.js,我这样做了:
打开/usr/lib/meteor/app/meteor/run.js
之前
加
以下是附加调试器eclipse的其他实用步骤:
在这里使用'--debug-brk'而不是'--debug',因为我更容易使用eclipse作为调试器附加node.js .
在要调试的代码中添加'debugger;' . (我个人更喜欢这种方式)
在控制台中运行meteor
附加到eclipse中的node.js(V8工具,附加到localhost:5858)
运行,等待调试器被命中
当您在meteor app文件夹中启动meteor时,您将在控制台中看到“调试器在端口5858上侦听” .
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;
的位置,它将在打开检查器的客户端或服务器浏览器窗口中断 .我喜欢通过GUI设置断点 . 这样我就不必记得从我的应用程序中删除任何调试代码 .
这就是我设法为我的本地流星应用程序做服务器端的方法:
以这种方式启动你的应用 .
Open Chrome to the address it gives you. 您可能需要安装https://github.com/node-inspector/node-inspector(它现在可能与Meteor捆绑在一起?不确定)
你会看到一些奇怪的内部流星代码(不是你写的应用程序代码) . Press play 运行代码 . 此代码只是启动服务器以侦听连接 .
只有在按下播放后,您才会在调试器文件夹结构中看到名为 "app" 的新目录 . 在你的流星项目文件中 . 在那里设置一个你想要的断点 .
Open the local address of your app . 这将运行您的服务器端代码,您应该能够达到您的断点!
注意:您必须重新打开检查器,并在每次重新启动应用程序时再次执行此过程!
从Meteor 1.0.2开始,服务器端调试的最佳方式可能是直接通过新的内置shell:运行服务器运行
meteor shell
. 更多信息:https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell我不确定为什么它不适合你 .
我可以按照控制台(Mac)上的步骤使用它 .
上述步骤在https://github.com/dannycoates/node-inspector中提及 . 它用于将node-inspector附加到运行节点进程 .
一世写了一个名为meteor-inspector的小型流星包,它简化了节点检查器的使用,以调试流星应用程序 . 它在内部管理节点检查器的生命周期,因此,在某些文件发生更改后,用户无需手动重新启动调试器 .
有关更多详细信息和具体使用说明,请查看https://github.com/broth-eu/meteor-inspector .
对于流星1.3.5.2,运行
WebStorm,为开源开发人员免费提供的强大IDE,使得调试服务器端变得更加容易 .
我在Windows上测试过,配置很简单 - 请参阅my answer .
解决我的问题的检查员是流星服务器控制台 . 以下是我安装它的过程:
server-eval
:对于流星1.0:
重启meteor .
从here下载
crx
Chrome扩展程序文件 .在Chrome中打开扩展程序页面,然后将
crx
文件拖到扩展程序页面 .重新启动Chrome .
检查Web检查器以获取eval服务器端代码:
与节点检查员相比,我有更清晰的输出 .
如果您更喜欢使用nodeJS' official debugger,则可以调用
NODE_OPTIONS='--debug' meteor
然后(在不同的shell上)node debug localhost:5858
.