Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js &引用;无法获取/quot;尝试连接到本地express服务器时_Node.js_Express_Socket.io - Fatal编程技术网

Node.js &引用;无法获取/quot;尝试连接到本地express服务器时

Node.js &引用;无法获取/quot;尝试连接到本地express服务器时,node.js,express,socket.io,Node.js,Express,Socket.io,在完成代码学校的node.js课程后,我遵循了关于如何使用express 3设置socket.io服务器的指南,但当我尝试连接到localhost:8080时,它会告诉我“无法获取/” 我的防火墙设置为允许8080端口上的传入和传出请求,并且安装了最新版本的express和socket.io。我的代码如下: app.js var express = require("express"); var socket = require("socket.io"); var app = express(

在完成代码学校的node.js课程后,我遵循了关于如何使用express 3设置socket.io服务器的指南,但当我尝试连接到localhost:8080时,它会告诉我“无法获取/”
我的防火墙设置为允许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>
编辑:

这在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);

如果这在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);

我发现我收到了错误,因为节点不够聪明,无法从localhost:8080默认设置index.htm,因此我需要键入localhost:8080/index.htm来访问该页面。

Hm,因为这是Windows,请尝试将
app.js
中的“/public”更改为“\public”?何时收到错误?比如运行app.js或从浏览器点击服务器时?我在你的代码中没有看到任何路由。此外,Express 3要求您实例化一个
http.Server
来连接套接字。io@MOmary如果未创建/route,Express静态中间件将自动从指定的静态文件夹(在本例中为“public”)提供index.html。上面的代码在Linux上运行良好,这就是我认为这是Windows路径问题的原因。@MOmary在尝试连接到localhost:8080时会显示错误。@ScottGress如果我尝试\public,我会收到相同的错误。它在我的PC上运行得很好!无论如何,如果您创建一个类似“aap.get('/',function(req,res){res.sendFile('index.html');})”的路由,那么localhost:8080将直接将您带到localhost:8080/index。html@MOmary谢谢你的提示。@MOmary但是,这样做会产生错误
TypeError:Object#没有方法“sendFile”
,根据另一篇帖子,它应该是
res.send(状态码,数据)。抱歉,实际上我弄错了,它不是'res.sendfile()sendFile@MOmary更不用说app而不是aap,以及app.get方法末尾的分号了。它看起来是这样的:
app.get('/',function(req,res){res.sendfile('index.html');})
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);