如何将 NodeJS 调试器通过隧道传送到 Vagrant 框?
Posted
技术标签:
【中文标题】如何将 NodeJS 调试器通过隧道传送到 Vagrant 框?【英文标题】:How do I tunnel the NodeJS debugger through to a Vagrant box? 【发布时间】:2014-06-30 20:48:27 【问题描述】:我正在尝试设置 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: (56) Recv failure: Connection reset by peer
有人对我做错了什么有任何想法吗?这甚至可以通过 Vagrantfile 进行配置吗?
我想通过这个来完成它,以便我的团队可以使用零配置连接他们的调试器。
谢谢
【问题讨论】:
我也遇到了同样的问题,你解决了吗? 没有。我有点认为当前的 Vagrant 设置是不可能的。它进行端口转发,但隧道是一种 SSH 操作,似乎超出了它的工作方式。打算开始赏金,看看是否有人能证明我错了 这对我有用:neilk.net/blog/2013/08/21/… 【参考方案1】:您可以尝试使用配置 shell 脚本 (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 中复制公钥和类似任务。
【讨论】:
这会放在哪里?你真的试过了吗? 我在答案中添加了有关如何使用配置脚本的更多详细信息。以上是关于如何将 NodeJS 调试器通过隧道传送到 Vagrant 框?的主要内容,如果未能解决你的问题,请参考以下文章
无法将 dialogflow webhook 链接到 ngrok 隧道