运行node server.js
时遇到以下错误:
为什么require
会抛出错误?我使用的是Socket.IO,server.js
中的代码如下所示:
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');
server.listen(8890);
io.on('connection', function (socket) {
console.log("new client connected");
var redisClient = redis.createClient();
redisClient.subscribe('message');
redisClient.on("message", function(channel, message) {
console.log("mew message in queue "+ message + "channel");
socket.emit(channel, message);
});
socket.on('disconnect', function() {
redisClient.quit();
});
});
答案 0 :(得分:3)
您的问题是您使用的是Socket.io v0.8.1。您可以通过至少安装v1.0.0 解决此问题。如果您对先前版本的升级没有任何要求/限制,我建议使用最新的稳定版本。
require('io')(srv)
签名在v1.0.0中发布。加上v0.8.1可以追溯到2011年;这是很长一段时间,并且在Node,以及Express和Socket.io中已经发生了很大变化。
以下是有关从版本v0.9及更低版本过渡到v1.0.0 +的更多信息:http://socket.io/docs/migrating-from-0-9/
您可以在此处找到Socket.io的版本历史记录:https://github.com/socketio/socket.io/blob/master/History.md