meteor:在服务器端debugging

有谁知道一个好的方法来debugging服务器端代码? 我试过启用Node.jsdebugging,然后使用节点检查器,但它不显示任何我的代码。

我最终使用console.log,但这是非常低效的。

更新:我发现以下过程在我的Linux机器上工作:

  1. 当你运行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

  2. 您需要在process2上发送kill -s USR1

  3. 运行节点检查器,你可以看到你的服务器代码

在我第一次尝试时,我修改了/ 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,我这样做了:

  1. 打开/usr/lib/meteor/app/meteor/run.js
  2. 之前

     nodeOptions.push(path.join(options.bundlePath, 'main.js')); 

     nodeOptions.push('--debug'); 

以下是附加debugging器eclipse的其他实用步骤:

  1. 在这里使用“–debug-brk”而不是“–debug”,因为使用eclipse作为debugging器,我更容易附加node.js。
  2. 添加“debugging器” 在你想debugging的代码中(我个人更喜欢这种方式)
  3. 在控制台中运行meteor
  4. 附加到eclipse中的node.js(V8工具,附加到本地主机:5858)
  5. 运行,等待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服务器控制台。 以下是我遵循的安装过程:

  1. 在您的项目文件夹中,添加智能软件包server-eval

     mrt add server-eval 

    对于meteor1.0:

     meteor add gandev:server-eval 
  2. 重新开始meteor。

  3. 从这里下载crx Chrome扩展文件。
  4. 在Chrome中打开扩展页面,然后将crx文件拖到扩展页面。
  5. 重新启动Chrome。
  6. 检查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