簡體   English   中英

socket.io/socket.io.js-找不到。 Node.js,express.js和socket.io應用

[英]socket.io/socket.io.js - not found. Node.js, express.js and socket.io app

我收到錯誤消息,指出無法加載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問題時。 我的代碼有什么問題嗎? 我應該怎么做才能使此東西正常工作?

在終端中運行npm update解決此問題嗎? (您可能需要使用sudo或等效權限以提升的特權運行它)

使用Node.js運行應用程序時,它不會自動安裝依賴項。 您需要使用NPM(節點程序包管理器)。 他們是一個更新命令。 在包含package.json文件的目錄中,運行以下命令:

npm update

您可能需要提升的特權。 這是在Mac OS X / Linux上的樣子:

sudo npm update

您在那里,讓我在您的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);
    });

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM