【问题标题】:Failed to load resource socket.io加载资源 socket.io 失败
【发布时间】:2016-07-01 16:14:44
【问题描述】:

我试图在我的 node.js 应用程序中使用 socket.io,但我的客户端无法从我的服务器获取库,我不知道为什么。

错误:加载资源失败:服务器以 http://localhost:3000/socket.io/socket.io.js 状态响应 404(未找到) 服务器站点:

    var express = require('express');
    var app = express();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);

    app.use(express.static('public'));

    app.get('/', function (req, res) {
      res.sendFile( __dirname + "/" + "index.html" );
    });

    app.listen(3000, function () {
      console.log('Example app listening on port 3000!');
    });

    io.on('connection', function(socket){
      console.log('a user connected');
    });

客户端:

<head>
    <link rel="stylesheet" href="/stylesheets/style.css" />
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io();
    </script>
</head>

【问题讨论】:

  • 你的项目中安装了socket.io了吗?
  • 是的,我已经安装了 socket.io

标签: javascript node.js socket.io


【解决方案1】:

在学习 Node.js 时,我在 index.html 中遇到了同样的问题。 控制台提示类似错误

我通过在我的项目目录中执行npm r socket.io 删除了socket.io 模块并使用npm i socket.io 重新安装它,然后它工作正常。

【讨论】:

    【解决方案2】:

    您的 index.html 代码找不到 socket.io,因为您只发送 Index.html 以进行响应。请尝试以下代码。

    使用以下代码:

    //"client" is folder for client code which contains index.html
        app.use(express.static(__dirname + '/client'));
    

    删除以下代码。 Node.js 会自动找到 index.html。

     app.get('/', function (req, res) {
      res.sendFile( __dirname + "/" + "index.html" );
    });
    

    改变你的 index.html 新代码:

    <script src="https://cdn.socket.io/socket.io-1.3.7.js"></script>
    

    旧代码:

    <script src="/socket.io/socket.io.js"></script>
    

    【讨论】:

    • 服务器端 socket.io 库自动为客户端 socket.io.js 文件公开一个路由。如果 server-side library 使用 node.js 安装属性,则此路由将为您提供文件,并从埋在 node_modules 层次结构中的目录提供文件(您不必担心)。所以,这个答案并不能以任何方式解决 OP 的问题。
    【解决方案3】:

    我不知道你的代码为什么不能工作,但是如果 socket.io 安装正确,那么它会自动在 Express 中配置一个路由来处理对/socket.io/socket.io.js 的请求。因此,显然 socket.io 在您的情况下没有正确配置/安装。

    我可以告诉你,这个 Express 和 socket.io 的初始化工作并且没有你说的问题:

    var express = require('express');
    var app = express();
    var server = app.listen(80);
    var io = require('socket.io')(server);
    

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 2014-08-21
      • 2020-11-18
      • 2020-07-16
      • 2014-01-21
      • 1970-01-01
      • 2018-01-15
      • 2013-02-26
      相关资源
      最近更新 更多