【问题标题】:404 error using socket.io with express-generator使用带有 express-generator 的 socket.io 时出现 404 错误
【发布时间】:2014-08-03 12:23:18
【问题描述】:

我正在使用 express-generator 结构构建 socket.io 的“hello world”。当我执行我的应用程序时,我收到“localhost/socket.io/socket.io.js 404 Uncaught ReferenceError: io is not defined”。我安装了套接字依赖项,并将套接字 io 路由创建到 index.js(由 express-generator 生成)中。

路由/index.js

var express = require('express');
var router = express.Router();

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

views/index.ejs

<script src="socket.io/socket.io.js"></script>
var socket = io();

【问题讨论】:

标签: node.js express socket.io


【解决方案1】:

使用 express-generator 工具生成 express 项目后遇到同样的问题。使用 this 配置,一切都像魅力一样

【讨论】:

    【解决方案2】:

    我建议你使用全局结构来定义 express.js 的路由,你需要使用 io.connect(path) 函数将你的网页连接到你的 node.js 服务器

    路由/index.js

    var express=require('express');
    var http=require('http');
    var app=express();
    var server=http.createServer(app).listen(process.env.PORT);
    var io=require('socket.io').listen(server);
    
    app.use(express.static(__dirname+'/views'));
    

    并使用 app.get 方法处理不存在的 URL 请求,您可以将任何页面名称放在 Default.html 的位置

    app.get('*',function(request,response){
    response.redirect('Default.html');
    });
    

    然后在您的客户端文件views/index.ejs 中使用此代码

     var socket;
     $(document).ready(function(){
     socket=io.connect(window.location.hostname);});
    

    您可以使用您的 url 本地路径更改您的“window.location.hostname”全局变量,以防发生错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-14
      • 2017-11-29
      • 2019-11-09
      • 2017-08-16
      • 2014-02-13
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      相关资源
      最近更新 更多