如何将NodeJS调试器通过隧道连接到Vagrant虚拟机?

6
我正在尝试设置WebStorm NodeJS调试器,以连接到托管在Vagrant虚拟机上的NodeJS项目。但是我遇到了一些困难。
如果我以传统方式(即通过终端)进入服务器,一切都正常,并且我能够使用cURL对其进行调试并通过WebStorm进行调试等操作。
    ssh -L 5858:127.0.0.1:5858  -N vagrant@10.20.30.40

在我成功实现了那个,我把下面的内容放到了我的Vagrantfile文件里:

    config.vm.network :forwarded_port, guest: 5858, host: 5858

与之前不同的是,这仍然在Vagrant虚拟机上运行,但在我的本地机器上无法运行。当我使用cURL访问它时,会出现以下错误:
    curl: (56) Recv failure: Connection reset by peer

有人知道我做错了什么吗?能否通过Vagrantfile进行配置?

我想通过这种方式做到零配置,让我的团队能够连接他们的调试器。

谢谢。


我遇到了同样的问题,你解决了吗? - Kioko Kiaza
不行。我认为在当前的Vagrant设置下这是不可能的。它可以进行端口转发,但隧道是一种SSH操作,似乎超出了它的工作方式。我将开始一个赏金计划,看看是否有人能证明我错了。 - MrSimonEmms
这对我有用:http://neilk.net/blog/2013/08/21/how-to-debug-node-dot-js-from-within-vagrant/ - Kioko Kiaza
1个回答

3
您可以尝试使用一份供应脚本(tunnel.sh),它将创建一个远程端口转发到您的计算机:
#!/bin/bash

# executed from 'vagrant'
ssh -R 5858:127.0.0.1:5858 me@my-machine

实际上,您应该将此脚本放在与Vagrantfile相同的文件夹中,并编辑Vagrantfile以添加这些行:

Vagrant.configure("2") do |config|
    config.vm.provision "shell", path: "tunnel.sh"
end

这将使Vagrant每次执行该命令时都执行此脚本:
vagrant up

或者:

vagrant provision

尝试时,您应该删除Vagrantfile中的端口转发行。 我没有尝试隧道,但实际上我使用配置脚本在启动时配置虚拟机,例如将公钥复制到authorized_keys中和类似的任务。

这应该放在哪里?你真的试过了吗? - MrSimonEmms
我在答案中添加了有关如何使用配置脚本的更多细节。 - R.Sicart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接