使用NodeJs和stream浪汉

我有这个stream浪文件

VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise32" config.vm.network "forwarded_port", guest: 80, host: 3000 config.vm.network "private_network", ip: "192.168.33.11" end 

我的目标是运行nodejs的虚拟机。 我已经正确安装了节点。 在“vagrant ssh”之后,我用这个内容创build了一个“index.js”文件:

 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(3000, '127.0.0.1'); console.log('Server running at http://127.0.0.1:3000/'); 

从vagrant @ precise32:/ vagrant $,当我运行“curl localhost:3000”时,我得到“Hello world”。 但是…

我需要做什么,打开我的本地浏览器,并获得相同的“你好世界”?


如果我试图“curl”我的虚拟机的IP,我得到这个:

 $ curl 192.168.33.11:3000 curl: (7) Failed connect to 192.168.33.11:3000; Connection refused 

试图telnet:

 $ telnet 192.168.33.11:3000 Trying 192.168.33.11:3000... curl: (7) Failed connect to 192.168.33.11:3000; Connection refused 

尝试curl–verbose仍然不工作与端口3000

 $ curl --verbose 192.168.33.11:3000 * About to connect() to 192.168.33.11 port 3000 (#0) * Trying 192.168.33.11... * Adding handle: conn: 0x7f8f5a803a00 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0x7f8f5a803a00) send_pipe: 1, recv_pipe: 0 * Failed connect to 192.168.33.11:3000; Connection refused * Closing connection 0 curl: (7) Failed connect to 192.168.33.11:3000; Connection refused 

与80端口完美配合

 $ curl --verbose 192.168.33.11 * About to connect() to 192.168.33.11 port 80 (#0) * Trying 192.168.33.11... * Adding handle: conn: 0x7fc93b802000 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0x7fc93b802000) send_pipe: 1, recv_pipe: 0 * Connected to 192.168.33.11 (192.168.33.11) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.30.0 > Host: 192.168.33.11 > Accept: */* > < HTTP/1.1 200 OK < Date: Mon, 07 Jul 2014 07:06:25 GMT * Server Apache/2.2.22 (Ubuntu) is not blacklisted < Server: Apache/2.2.22 (Ubuntu) < Last-Modified: Sun, 06 Jul 2014 13:53:47 GMT < ETag: "4811a4-bb-4fd86b009e369" < Accept-Ranges: bytes < Content-Length: 187 < Vary: Accept-Encoding < Content-Type: text/html < X-Pad: avoid browser bug < <html><body><h1>It works un casino!</h1> <p>This is the default web page for this server.</p> <p>The web server software is running but no content has been added, yet.</p> </body></html> * Connection #0 to host 192.168.33.11 left intact 

如果192.168.33.11是虚拟机运行节点的IP,那么通常在本地计算机上加载192.168.33.11:3000。 curl错误7表示请求在防火墙的情况下被阻止。

虽然这是一个老问题,但是对于那些在新版本的Node / Vagrant上偶然发现的问题,这里有一个解决scheme。

看来,节点不再需要端口转发通过Vagrant工作。 实际上,在虚拟机上运行127.0.0.1节点的情况下,没有任何转发的端口configuration对我有效。

相反,请让Node服务器在您在Vagrantfile中指定的专用networkingip上运行。 在上面的例子中,这相当于listen(3000, '192.168.33.11');

在Win 10和MacOS Mavericks上的Node 4.2.6和Vagrant 1.8.7上为我工作。