Socket.IO错误'listen()'方法在移动到Express 3.0之后需要一个“httpServer”实例 [英] Socket.IO error 'listen()' method expects an 'http.Server' instance after moving to Express 3.0

查看:335
本文介绍了Socket.IO错误'listen()'方法在移动到Express 3.0之后需要一个“httpServer”实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我今天开始学习Node.js,我有点困难。

I literally began learning Node.js today and I'm a little stuck.

以下这个例子,当我尝试执行js文件时,我得到以下错误:

Following this example, I get the following error when I try executing the js file:

Warning: express.createServer() is deprecated, express
applications no longer inherit from http.Server,
please use:

  var express = require("express");
  var app = express();

Socket.IO's `listen()` method expects an `http.Server` instance
as its first parameter. Are you migrating from Express 2.x to 3.x?
If so, check out the "Socket.IO compatibility" section at:
https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
   info  - socket.io started

我不知道如何解决这个问题。

I don't know how to fix this. I would appreciate any direction.

请帮助。

更新

由比尔的修改代码导致的错误:

Error resulting from Bill's modified code:

/home/sisko/NodeJS/nodeSerialServer/serialServer.js:24
var app     =   express()
                ^
ReferenceError: express is not defined
    at Object.<anonymous> (/home/sisko/NodeJS/nodeSerialServer/serialServer.js:24:12)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)


推荐答案

有关如何初始化版本2和3之间的 express 应用程序的更改这个例子基于版本2,但是看起来你已经安装了版本3.你只需要更改几行来正确设置 socket.io 。更改以下行:

There was a change to how you initialize express apps between versions 2 and 3. This example is based on version 2 but it looks like you've installed version 3. You just need to change a couple of lines to set up socket.io correctly. Change these lines:

var app = require('express').createServer(),
    io = require('socket.io').listen(app),
    scores = {};                                

// listen for new web clients:
app.listen(8080);

到:

var express = require('express'),
    app = express()
  , http = require('http')
  , server = http.createServer(app)
  , io = require('socket.io').listen(server);

// listen for new web clients:
server.listen(8080);

这篇关于Socket.IO错误'listen()'方法在移动到Express 3.0之后需要一个“httpServer”实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆