3

我有一个设计用于在命令行上执行的 NodeJS 脚本,也就是一个 shell 脚本。

我想在 phpStorm 7 中调试我的脚本,但是调试器只是坐在那里并且不调试我的脚本。

脚本:

#!/usr/bin/env node

var fs = require("fs");

....

phpStorm 调试控制台输出:

/opt/local/bin/node --debug-brk=51096 main.js
debugger listening on port 51096

阅读http://www.jetbrains.com/phpstorm/webhelp/running-and-debugging-node-js.html似乎 NodeJS 插件偏向于 Web 应用程序,因为大多数指令都包含类似

copy the URL address at which the application is running.

这在这种情况下没有意义。

我可以通过 NodeJS 运行配置运行脚本,但无法调试。

是我做错了什么,还是插件的错?

更新:

回答莉娜的问题:

  • 操作系统是 OSX 雪豹
  • Java版本是1.6.0_51
  • NodeJS 版本为 v0.10.19
  • IDE 版本是 phpStorm 7 build 131.374
  • NodeJS 插件版本 131.488

我查看了提到的链接 lena并且确实有类似的问题,因为调试器已启动但应用程序未启动(请参阅上面的控制台日志输出)。在 WebStorm 7.0.1 中为该用户修复了该问题 如果修复合并到代码库中,这个问题可能会在 phpStorm 的一个点版本中得到修复。

最后,我知道在 phpStorm web 帮助中提到浏览器是一个红鲱鱼,也许应该更新文档以适应没有 web 组件的 NodeJS 脚本的运行/调试。

4

3 回答 3

2

我的 Mac(Marverick) 的 PhpStorm7 也有同样的问题,即 node.js 调试器不启动应用程序。并且,重新启动调试器会导致 IDE 致命错误,如下所示。

com.intellij.javascript.debugger.impl.JSDebugProcess.getBrowserName()Ljava/lang/String;: com.intellij.javascript.debugger.impl.JSDebugProcess.getBrowserName()Ljava/lang/String;
java.lang.AbstractMethodError: com.intellij.javascript.debugger.impl.JSDebugProcess.getBrowserName()Ljava/lang/String;
    at com.intellij.javascript.debugger.scripts.ScriptManager.getBrowserName(ScriptManager.java:52)
    at com.intellij.javascript.debugger.scripts.RootScriptsNode.buildChildren(RootScriptsNode.java:24)
    at com.intellij.ui.treeStructure.CachingSimpleNode.getChildren(CachingSimpleNode.java:36)
    at 

这个致命错误会弹出错误报告窗口,但未启用“报告给 JetBrains”按钮,但我输入了报告,所以我无法向 JetBrains 报告这个问题。

我将 PhpStorm7 安装到 debian linux,但出现了同样的调试器问题。

现在我已经安装了 Early Access Program PhpStorm 7.1。

http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Early+Access+Program

它有效!,断点,步骤执行等都没有问题。

于 2013-11-24T09:37:41.657 回答
0

唯一有帮助的是降级到 PhpStorm 6。我现在有两个版本:7 用于开发,6 用于调试 node.js

于 2013-12-05T14:34:13.650 回答
0

我也在用 PhpStorm7 运行 Mac (Maverick) 并且有同样的问题。当我尝试调试 NodeJS 项目时,要么它说调试器正在侦听,但我的应用程序似乎从未启动,或者在某些情况下,经过多次尝试后,我得到了上述错误(“com.intellij.javascript.debugger.impl.JSDebugProcess.getBrowserName ()")。不管我们谈论的是简单的命令行应用程序还是为提供 Web 服务而编写的应用程序,应用程序都无法调试节点应用程序。我会试试 7.1。只是想我会添加到那里的数据中,这似乎表明这是一个真正的软件错误,而不是用户错误。

于 2013-11-25T14:50:18.607 回答