我正在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上的控制台时)。任何人都可以建议要使远程调试会话正常工作吗?
答案 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 connect,connected
答案 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在连接后设置断点。