将WebStorm连接到远程node.js调试会话
我正在Oracle VirtualBox的Linux虚拟机中运行Node.js应用程序。VM上的端口将WebStorm连接到远程node.js调试会话,node.js,debugging,vagrant,webstorm,Node.js,Debugging,Vagrant,Webstorm,我正在Oracle VirtualBox的Linux虚拟机中运行Node.js应用程序。VM上的端口5858被转发到本地主机上的端口5858 我在主机操作系统(Windows7)上运行WebStorm。在WebStorm中,我单击Run>>编辑配置…I然后单击添加按钮(加号)并选择Node.js远程调试。然后,我输入配置的名称,将主机保留为127.0.0.1,将端口保留为5858。我单击OK,并确保我的节点应用程序在带有--debug标志的VM上运行 然后单击WebStorm工具栏中的bug图标
5858
被转发到本地主机上的端口5858
我在主机操作系统(Windows7)上运行WebStorm。在WebStorm中,我单击Run>>编辑配置…
I然后单击添加按钮(加号)并选择Node.js远程调试
。然后,我输入配置的名称,将主机保留为127.0.0.1
,将端口保留为5858
。我单击OK
,并确保我的节点应用程序在带有--debug
标志的VM上运行
然后单击WebStorm工具栏中的bug图标,调试器出现在WebStorm IDE的底部
如何确认连接成功?断点不起作用,WebStorm中的控制台保持为空(同时信息被发送到Linux虚拟机上的控制台)。有人能建议要使远程调试会话正常工作还需要做些什么吗?1)来自WebStorm手册:
当要调试的应用程序在物理远程主机上运行时,您需要运行代理或任何其他软件,以确保Node.js服务器上的端口转发。这是必需的,因为调试端口只能在本地主机网络接口上打开。无法从另一台计算机访问localhost网络接口,因此WebStorm无法在启动调试会话时连接到该接口
2) VM上的localhost与主机上的localhost不同(听起来很奇怪)
3) V8调试器正在本地主机上侦听
解决方案:
您可以将ssh代理安装到linux虚拟机:ssh-L 5858:127.0.0.1:5858@-N
,在这里您可以找到如何在Windows上执行此操作的答案->
如果执行上述操作,WebStorm中的调试配置将为主机:127.0.0.1端口:5858
您可以通过检查“调试器”选项卡和“变量”面板来检查WebStorm是否连接到远程调试会话 而不是仅仅
$ vagrant ssh
试一试
我还从我的vagrant文件
中删除了行config.vm.network:forwarded\u port,guest:5858,host:5858
,并执行了$vagrant重新加载
在你的流浪盒子里跑
$ node --debug-brk path/to/file.js
设置Node.js远程调试运行/调试配置,默认设置为正常(主机127.0.0.1和端口5858)
从您的主机上运行以下命令,而不是从您的“流浪者”对话框中运行
$ 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,但应该是相同的。我假设只要安装了NodeJS插件,它就可以在所有基于IntelliJ的IDE上工作。这就是我在linux Debian VM中所做的: 安装平衡器
sudo-apt-get-install-balance-y
在平衡器中创建一个路由,将5858端口重新路由到5859
余额5859 127.0.0.1:5858
启动你的应用程序
节点——调试app.js
现在,您可以从端口5859上的虚拟机外部访问它,只需提醒一下,当我尝试此操作时,我必须使用
--debug brk
。使用just--debug运行时不允许WebStorm在连接后设置断点。vagrant文件中有一行用于创建VMconfig.VM.network:forwarded\u port,guest:5858,host:5858
这应该可以实现吗?WebStorm当前保持在调试器变量面板中连接到127.0.0.:5858的上。vagrant不允许转发绑定到lo的端口。它可以转发的服务正在使用0.0.0.0请澄清您的最后评论-我不理解.Node.js作为示例-http.createServer(…).listen(5858);正在侦听0.0.0.0:5858,这意味着无论连接到您的计算机的IP是什么(loclahost,eth0 IP…),请求都会到来,节点将拾取它,但如果您让它只侦听lo-http.createServer(…)。侦听(5858,'127.0.0.1');您将无法通过外部ip地址(连接到eth0、eth1等)访问它。Vagrant无法从lo(127.0.0.1)转发端口以使它们从外部可用,默认情况下,V8调试器正在127.0.0.1上侦听。我提供的Ssh命令正在创建。。。。。。将所有流量从端口5858上的主机转发到Vagrant VM上的localhost:5858。如果有人碰巧运行带有--inspect标志的WebStorm 2017.2和nodejs,请确保首先将WebStorm更新到2017.3 EAP,该版本支持由--inspect标志强制实施的新Chromium调试协议。
Type: connect
V8-Version: 3.14.5.9
Protocol-Version: 1
Embedding-Host: node v0.10.28
Content-Length: 0