尝试连接到本地快递服务器时“无法GET /”

完成Code School的node.js课程之后,我按照这个指南来介绍如何使用express 3来设置socket.io服务器,但是当我尝试连接到localhost:8080时,它给了我“无法GET /”。
我的防火墙设置为允许端口8080的传入和传出请求,并且我安装了express和socket.io的最新版本。 我的代码如下:

app.js

var express = require("express"); var socket = require("socket.io"); var app = express(); app.use(express.static(__dirname + "/public")); var server = app.listen(8080); var io = socket.listen(server); 

的index.html

 <!doctype html> <html> <head> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript"> var server = io.connect("http://localhost:8080"); </script> </head> <body> <p>Test</p> </body> </html> 

目录结构

 C:\Users\Joseph\Desktop\test\node_modules \public\index.html \app.js 

编辑:

这也不适用于app.js:

 var http = require("http"); var express = require("express"); var socket = require("socket.io"); var app = express(); app.use(express.static(__dirname + "/public")); var server = http.createServer(app); server.listen(8080); var io = socket.listen(server); 

我发现我得到的错误,因为节点不够聪明,以默认目标index.htm从本地主机:8080,因此我需要键入本地主机:8080 / index.htm访问该页面。

那么如果这不是在Windows上工作,那么尝试在你的app.js中做这个:

 var express = require("express"); var socket = require("socket.io"); var path = require('path'); // path is a built-in modules var app = express(); app.use(express.static(path.join(__dirname, 'public'))); var server = app.listen(8080); var io = socket.listen(server);