将WebStorm连接到远程node.js调试会话

时间:2014-02-07 17:18:10

标签: node.js debugging vagrant webstorm

我正在Oracle VirtualBox中的Linux VM中运行Node.js应用程序。 VM上的端口5858将转发到localhost上的端口5858

我在主机操作系统(Windows 7)上运行WebStorm。在WebStorm中,我单击Run >> Edit Configurations....然后单击添加按钮(加号)并选择Node.js remote debug。然后,我输入配置名称,将主机保留为127.0.0.1,将端口保留为5858。我单击OK,确保我的节点应用程序在具有--debug标记的VM上运行。

然后,我单击WebStorm工具栏中的错误图标,调试器出现在WebStorm IDE的底部。

如何确认连接成功?断点不起作用,WebStorm中的控制台保持为空(当信息发送到Linux VM上的控制台时)。任何人都可以建议要使远程调试会话正常工作吗?

4 个答案:

答案 0 :(得分:21)

而不仅仅是

$ vagrant ssh

$ vagrant ssh -- -L 5858:127.0.0.1:5858

我还从config.vm.network :forwarded_port, guest: 5858, host: 5858删除了行Vagrantfile并执行了$ vagrant reload

在你的流浪盒中运行

$ node --debug-brk path/to/file.js

设置Node.js远程调试运行/调试配置,默认设置很好(主机127.0.0.1和端口5858)。

从您的HOST机器运行以下命令,而不是您的流浪盒。

$ telnet 127.0.0.1 5858

您应该得到像

这样的回复
Type: connect
V8-Version: 3.14.5.9
Protocol-Version: 1
Embedding-Host: node v0.10.28
Content-Length: 0

如果你没有,那么港口前进有问题。您可以在主机端尝试不同的端口,并将先前从端口5858设置的webstorm运行/调试配置更新到新端口。

现在运行NodeJS调试配置。它应该立即拿起文件,你就可以调试它。

我的基础是PHPStorm,但它应该是相同的。我假设它只适用于所有基于IntelliJ的IDE,只要你安装了NodeJS插件。

答案 1 :(得分:16)

1)来自WebStorm手册:

  

当要在物理远程主机上运行调试应用程序时,您需要运行代理或任何其他确保Node.js服务器上的端口转发的软件。这是必要的,因为调试端口只能在localhost网络接口上打开。无法从另一台计算机访问localhost网络接口,因此WebStorm在启动调试会话时无法连接到该网络。

2)VM上的localhost与主机上的localhost不同(听起来很奇怪)。

3)V8调试器正在侦听localhost

解决方案:

您可以将ssh代理设置为Linux VM:ssh -L 5858:127.0.0.1:5858 <vm_user>@<vm_ip> -N,在这里您可以找到答案如何在Windows上执行此操作 - &gt; stackoverflow 如果您将执行上述操作,您在WebStorm中的调试配置将是主机:127.0.0.1端口:5858

您可以通过选中Debugger选项卡和Variables面板来检查WebStorm是否已连接到远程调试会话。 can not connectconnected

答案 2 :(得分:4)

这就是我在linux Debian VM中所做的:

安装平衡器

sudo apt-get install balance -y

在平衡器中创建一条路线,将您的5858端口重新路由到5859

balance 5859 127.0.0.1:5858

启动你的应用

node --debug app.js

现在您可以通过端口5859从VM外部访问它

答案 3 :(得分:2)

只是抬头,当我尝试这个时,我不得不使用int。仅使用--debug-brk运行不允许WebStorm在连接后设置断点。