Node.js创建socket.io服务时报require(...).server is not a function如何解决
错误解决方案
错误根因
报错是因为require('http').server调用的方法不存在:Node.js 原生http模块提供的服务构造函数名为大写开头的Server,而非小写的server,同时你的socket.io初始化缺少必要的http服务实例传入。
修复步骤
- 修正http服务创建代码,两种写法均可,更推荐语义更清晰的
createServer写法:// 写法1(推荐) var http = require('http').createServer(app) // 写法2 var http = require('http').Server(app) - 修正socket.io初始化逻辑,将创建好的http服务实例传入:
var io = require('socket.io')(http) - 后续启动服务使用
http实例调用listen方法,不要使用app.listen,否则socket.io无法绑定端口接收WebSocket请求:http.listen(你的端口号, 回调函数)
完整修复后代码示例
var express = require('express') var bodyParser = require('body-parser') var app = express() // 创建http服务 var http = require('http').createServer(app) // 初始化socket.io绑定到http服务 var io = require('socket.io')(http) // 可在此处添加 express 路由、socket.io事件监听等业务逻辑 // 启动服务监听3000端口 http.listen(3000, function() { console.log('服务已启动,访问地址:http://localhost:3000') })
内容的提问来源于stack exchange,提问作者Omar Esmael
相关产品推荐
相关产品推荐

