【问题标题】:Meteor debug on server side on windows with node-inspector使用节点检查器在 Windows 上的服务器端进行 Meteor 调试
【发布时间】:2013-01-28 05:59:50
【问题描述】:

我在 Windows 上运行流星,这里可能是少数。我搜索并找到了适用于 Linux 和可能是 Mac 的解决方案,但没有人提供适用于 Windows 的解决方案。也许有人可以帮忙?

首先我修改了C:\Program Files (x86)\Meteor 下的meteor.bat 文件以包含--debug,如其他帖子中所述:

@echo off&&"%METEOR_PATH%\bin\node.exe" --debug "%METEOR_PATH%\app\meteor\meteor.js" %*

我启动了我的节点检查器并收到了访问0.0.0.0:8080/debug?port=5858 以开始调试的指令

然后我启动了我的流星应用程序,但是当我转到http://127.0.0.1:8080/debug?port=5858 时,我看到了两个方块:一个用于脚本,一个用于控制台。选择脚本时什么也没出现。

Windows 是否存在与 Linux 相同的问题,产生两个进程但只有一个带有调试标志?

【问题讨论】:

  • 当我启动流星时,我可以看到节点检查器正确连接到它,“调试器正在侦听端口 5858”并确认我在调试器模式下启动了流星。但我仍然没有在“脚本”图标中看到任何内容。
  • 我注意到,当我启动流星时,它也启动了两个进程,就像在 Linux 中一样。当我杀死第二个进程时,它会自动再次启动它。当我杀死第一个进程时,应用程序刚刚退出。但与 Linux 不同,通过杀死第二个进程不会使其在节点检查器中显示服务器端脚本。
  • 现在通过切换到 Chrome,我可以看到所有 Meteor 脚本,但不是我自己的。这是使用 Firefox 运行但对调试没有帮助的改进。

标签: windows meteor node-inspector


【解决方案1】:

版本 0.5.3 添加了 NODE_OPTIONS 环境变量,将这些参数直接传递给节点。

所以启动你最喜欢的 js 调试器,比如 node-inspector 假设您已经安装了它,请致电

node-inspector

然后

set NODE_OPTIONS = --debug
meteor

在您的项目文件夹中执行此操作,您也可以使用 --debug-brk 在启动时立即中断

在 Chrome 中,在新标签页中打开 localhost:8080

玩得开心

【讨论】:

  • 这让我回到了原来的位置。根据 Windows Meteor 的 Tom Wijsman,我需要修改此文件并进行其他更改,以使我的代码在节点检查器中可见 github.com/meteor/meteor/blob/master/app/server/server.js#L92
  • 所以你可以启动调试器但看不到你的代码?在 >=0.5.3 的版本中,您无需更改代码即可进行调试。如果您可以访问调试器,则意味着标志正在正确传递给节点子进程,或者调试器正在附加到另一个也具有 --debug 标志的节点进程。使用 Process Explorer 之类的程序来监视进程参数,您应该有 3 个 node.exe 进程,1 个用于 node-inpector,1 个用于流星.js,在这 2 个子进程之下,mongo.exe 和 1 个节点用于您的项目。确保这是设置了调试标志的那个。
  • 是的,有三个node.exe进程。一个用于 node.inspector,两个用于流星。我独立于流星运行 mongodb。 -debug 进程附加到meteor 进程。我的问题如下; 1. 我的应用程序(第 3 方供应商)是否需要支持调试标志才能正常工作 2. 如果没有,我如何将调试标志附加到我的应用程序?
  • 我不确定我是否有这个问题,但是,您的应用程序不必支持调试标志,您也不必为它工作做任何事情。如果您可以在树中最深的流星进程上看到 --debug 标志,并且如果您能够附加调试器,则调试器工作正常,除了您看不到代码的事实。所以我们要调查的是为什么你看不到你的代码。你能做一个 --debug-brk 并进入你的代码吗?它会在meteor.js 内部中断吗?你看到了什么流星脚本?您的项目目录是否有特殊字符?也许回答这些问题可能会有所帮助。
  • 我尝试使用 --debug-brk。从节点检查器浏览器中,我可以看到它在meteor.js 中停止。在 Scripts 下的浏览器中,它有两个窗格。一个用于脚本,我可以看到流星源代码:meteor.js、_linklist.js、...util.js。在内容脚本里面什么都没有。我的目录结构为 C:\Users\jhuang\Documents\WebFM\WebFM_Evan_020413,下面有四个目录:.meteor、client、public 和 server。
猜你喜欢
  • 2012-06-17
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 2015-08-18
  • 2015-03-20
  • 1970-01-01
  • 2014-10-28
相关资源
最近更新 更多