我正在使用redis,并从nodejs咨询它,使用模块redis。
当我执行client.multi()并且redis服务器关闭时,回调不会发送错误,nodejs应用程序也会终止。
这就是错误

    /Users/a/db/node_modules/redis/index.js:151
                    throw callback_err;
                          ^
TypeError: Cannot read property 'length' of undefined
    at Command.callback (/Users/a/db/node_modules/redis/index.js:1098:35)
    at RedisClient.flush_and_error (/Users/a/db/node_modules/redis/index.js:148:29)
    at RedisClient.on_error (/Users/a/db/node_modules/redis/index.js:184:10)
    at Socket.<anonymous> (/Users/a/db/node_modules/redis/index.js:95:14)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:441:14
    at process._tickCallback (node.js:415:13)

这是我的代码:
构造函数类
var redis = require('redis');
var client;
function Redis(){
    client = redis.createClient();
    client.on("error", function (err) {
        console.log("Error " + err);
    });
}

Redis.prototype.multi =  function(commands,callback){
    var err = null;
    client.multi(commands).exec(function (error, res) {
        if(error){
            process.nextTick(function(){
                callback(error,null)
            })
        }else{
            process.nextTick(function(){
                callback(null,res)
            })
        }
    });
}

最佳答案

仅供参考,我在一个依赖于旧版本node_redis的旧库中遇到了这个问题。
此问题是一个错误,已在v0.9.1-2013年11月23日修复:https://github.com/mranney/node_redis/pull/457

关于node.js - 使用Redis Multi和nodejs时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19957314/

10-15 09:44