2016-04-14 29 views
0

Redlock modülünü kullanmaya çalışıyorum ama içinden geçemediğim bir hatayla karşılaşıyorum.Düğüm js dosyasında Redlock hatası

var redis = require('redis'); 
var Redlock = require('redlock'); 
var logger = require('./logger.js'); 

var client; 

module.exports.redisConnection = function(port,host){ 
    client = redis.createClient(port,host); 

    client.on('connect',function(){ 
     logger.info("Redis default connection open to "+host+":"+port); 
    }); 

    client.on('error',function(err){ 
     logger.info("Redis default connection error "+err); 
     logger.info("Redis Path : "+host+":"+port); 
    }); 

    process.on('SIGINT', function() { 
     client.quit();  
     logger.info("Redis default connection disconnected"); 
     process.exit(0); 
    }); 
}; 

var redlock = new Redlock(
    [client], 
    { 
     driftFactor : 0.01, 
     retryCount : 15, 
     retryDelay : 200 
    } 
); 

redlock.on('clientError', function(err) { 
    logger.info("A Redis Error Has Occurred : "+err); 
}); 

module.exports.lockRessource = function(ressource_id,callback){ 
    redlock.lock(ressource_id,2000,function(err,lock){ 
     if(err){ 
      callback(err,null); 
     } 
     else{ 
      callback(null,lock); 
     } 
    }); 
}; 

module.exports.unlockLock = function(lock,callback){ 

    lock.unlock(function(err){ 
     if(err){ 
      callback(true,null); 
     } 
     else{ 
      callback(null,true); 
     } 
    }); 
}; 

başka modülden lockRessource işlevini çağırarak deneyin, bir hata alıyorum: Burada

gibi benim redlock dosya göründüğünü olduğunu

2016-04-14T16: 28: 55,020 - info: TypeError: undefined 'un 'set' özelliğinin istek üzerine okunamaz (/usr/app/node_modules/redlock/redlock.js:260:18) /usr/app/node_modules/redlock/redlock.js:314: 12 Array.forEach (yerel) girişiminde (/usr/app/node_modules/redlock/redlock.js:313:24) Promise._execute (/usr/app/node_modules/redlock/node_modules/bluebird/js/release/debuggability.js:272:9) /usr/app/node_modules/redlock/redlock.js:318:10 at Promise.resolveFromExecutor (/usr/app/node_modules/redlock/node_modules/bluebird/js/release/promise.js:474:18) Yeni Promise'de (/ usr/app/node_modules/redlock/node_modules/bluebird/js/Redlock.lock (/usr/app/node_modules/redlock/redlock.js:249:9) adresindeki Redlock.lock (/ usr/app/node_modules/redlock/redlock) sürümünde, sürümünde yer almaktadır. js: 111: 14) Object.module.exports.lockRessource adresindeki (/usr/app/redisdata.js:42:10)

Bunun nereden kaynaklanabileceği hakkında bir fikriniz var mı? Bu modülle çılgınca bir şey yapmıyorum gibi görünüyor.

Çok teşekkürler! İstemci atandıktan sonra init redlock işlemi

cevap

0

. Eğer bu modülü kullanmak istediğinizde

var redis = require('redis'); 
var Redlock = require('redlock'); 
var logger = require('./logger.js'); 

var client; 
var redlock; 

module.exports.redisConnection = function(port,host){ 
    client = redis.createClient(port,host); 
    redlock = new Redlock(
     [client], 
     { 
      driftFactor : 0.01, 
      retryCount : 15, 
      retryDelay : 200 
     } 
    ); 

    client.on('connect',function(){ 
     logger.info("Redis default connection open to "+host+":"+port); 
    }); 

    client.on('error',function(err){ 
     logger.info("Redis default connection error "+err); 
     logger.info("Redis Path : "+host+":"+port); 
    }); 

    redlock.on('clientError', function(err) { 
     logger.info("A Redis Error Has Occurred : "+err); 
    }); 

    process.on('SIGINT', function() { 
     client.quit(); 
     logger.info("Redis default connection disconnected"); 
     process.exit(0); 
    }); 
}; 

module.exports.lockRessource = function(ressource_id,callback){ 
    redlock.lock(ressource_id,2000,function(err,lock){ 
     if(err){ 
      callback(err,null); 
     } 
     else{ 
      callback(null,lock); 
     } 
    }); 
}; 

module.exports.unlockLock = function(lock,callback){ 

    lock.unlock(function(err){ 
     if(err){ 
      callback(true,null); 
     } 
     else{ 
      callback(null,true); 
     } 
    }); 
}; 

, ilk redisConnection çağırır: gibi

Kişisel redlock dosyası bakacağız.
Yukarıdaki dosyanın adı "redlock.js" olduğunu varsayalım.

resource = require('./redlock.js') 

resource.redisConnection(6379, "127.0.0.1") 
resource.lockRessource("your resourceId", function(err, lock) { }) 
İlgili konular