如何让端口转发与 gatsby 和 vagrant 或 virtualbox 一起使用

Tod*_*fee 4 javascript virtualbox vagrant reactjs gatsby

当使用在 Vagrant(通过 Virtualbox)上运行的Gatsby时,我无法使端口转发工作。

默认情况下,Gatsby 在本地主机端口 8000 上运行。

我的 Vagrantfile 似乎使用以下方法转发正确的端口:

config.vm.network "forwarded_port", guest: 8000, host: 8000
Run Code Online (Sandbox Code Playgroud)

当我在 Vagrant box 上使用 启动 Gatsby 时yarn develop,guest box 上一切正常,应用程序在 localhost:8000 上运行

info bootstrap finished - 7.354 s

 DONE  Compiled successfully in 9091ms                                                                                                                                                                                                

You can now view foo-bar-org in the browser.

  http://localhost:8000/
Run Code Online (Sandbox Code Playgroud)

我可以curl http://localhost:8000在来宾盒上运行以验证它确实在本地提供内容。

当我进入浏览器并尝试访问http://localhost:8000时,返回主机框,它显示“本地主机拒绝连接”。

netstat -tulnp | grep 8000在来宾盒上运行我得到以下信息:

tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      1909/node 
Run Code Online (Sandbox Code Playgroud)

在主机箱上运行相同的我得到这个输出:

tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      13827/VBoxHeadless
Run Code Online (Sandbox Code Playgroud)

Tod*_*fee 9

我确实通过改变我在来宾盒上运行 Gatsby 的方式来实现这一点。似乎gatsby develop -H 0.0.0.0会让 Gatsby 监听来自所有主机的连接。然后netstat -tulnp | grep 8000输出更改为:

tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      2348/node
Run Code Online (Sandbox Code Playgroud)

我正在回答我自己的问题,以防它对其他人有帮助,但如果有人能想出更好的方法来做到这一点,而 Gatsby 仍然只在 localhost 上收听,那么我更喜欢该答案并接受该答案。