【问题标题】:socket.io/socket.io.js - not found. Node.js, express.js and socket.io appsocket.io/socket.io.js - 未找到。 Node.js、express.js 和 socket.io 应用程序
【发布时间】:2015-02-05 15:38:14
【问题描述】:

我收到无法加载 socket.io/socket.io.js 的错误。我做了这个:

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes');

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

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

app.get('/', routes.index);

app.listen(3000, function(){
  console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});

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

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

我的 layout.jade 文件如下所示:

doctype html
html
  head
    title= title
    script(src='//code.jquery.com/jquery-1.11.2.min.js')
    script(src='/bootstrap/js/bootstrap.min.js')
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/bootstrap/css/bootstrap.min.css')
    script(src='/socket.io/socket.io.js')
    script.
      var socket = io();
  body!= body

和 package.json 文件:

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "2.5.8",
    "jade": ">= 0.0.1",
    "socket.io": "^1.3.2"
  }
}

我用 npm 安装了 socket.io,所有文件都在 node_modules 目录中。我试图将 socket.io.js 文件复制到 /public 但也有错误。我尝试通过多种方式解决这个问题——使用 socket.io 文档、聊天教程和 StackOverflow 帖子。每次当我尝试你的 socket.io 问题时都会发生。我的代码有什么问题吗?我应该怎么做才能让这个东西正常工作?

【问题讨论】:

  • .listen(express) 中,express 不是服务器。
  • 非常感谢。我将 .listen(express) 更改为 .listen(app),现在它可以正常工作了!
  • 很抱歉,我没有看你的评论,所以在底部回答。 @AlanSobieraj

标签: node.js sockets express socket.io


【解决方案1】:

在终端中运行npm update 可以解决这个问题吗? (您可能需要使用 sudo 或同等权限以提升的权限运行它)

当您使用 Node.js 运行应用程序时,它不会自动安装依赖项。您需要使用 NPM(节点包管理器)。它们是一个更新命令。在您的 package.json 文件所在的目录中,运行以下命令:

npm update

您可能需要提升权限。这是它在 Mac OS X/Linux 上的样子:

sudo npm update

【讨论】:

    【解决方案2】:

    您非常满意,让我在您的 app.js 中更改一些内容。 立即尝试。

        var express = require('express')
      , routes = require('./routes');
    
    var app = module.exports = express.createServer();
    
    // Configuration
    
    app.configure(function(){
      app.set('views', __dirname + '/views');
      app.set('view engine', 'jade');
      app.use(express.bodyParser());
      app.use(express.methodOverride());
      app.use(app.router);
      app.use(express.static(__dirname + '/public'));
    });
    
    app.configure('development', function(){
      app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    });
    
    app.configure('production', function(){
      app.use(express.errorHandler());
    });
    
    // Routes
    
    app.get('/', routes.index);
    
    var server = app.listen(3000, function(){
      console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
    });
    var io = require("socket.io").listen(server);
    
    io.on("connection",function(socket){
        console.log("Application connected");
    
        socket.on('disconnect',function(){
            console.log("Application Disconnected");
        });
    
        socket.on('ABC Event',function(value){
            console.log("ABC event catched from client value passed is :"+value);
            //do something
            io.emit('new event',passSomeJSONtoClient);
        });
    
    });
    

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 2014-10-20
      • 2017-02-02
      • 2013-11-06
      • 2014-06-04
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多