2017-08-14 3 views
0

J'ai un comportement étrange Redis:Node-Redis: vérification prêt a échoué - NOAUTH Authentification requise

const redis = require('redis'); 
const { REDIS_URL: redisUrl, REDIS_PASSWORD: redisPassword } = process.env; 

const client = redis.createClient(redisUrl, { 
    no_ready_check: true, 
    auth_pass: redisPassword 
}); 

client.on('connect',() => { 
    redisPassword && client.auth(redisPassword); 
}); 

client.on('error', err => { 
    global.console.log(err.message) 
}); 

Mais tout le temps que je reçois l'erreur suivante:

throw er; // Unhandled 'error' event

ReplyError: Ready check failed: NOAUTH Authentication required.

Pourquoi unhandled? I set onerror handler
Pourquoi le contrôle Ready a échoué? I désactivé il dans les options

Répondre

0

Je ne sais pas pourquoi votre code va lancer cette erreur. Mais j'essaye ce code dans ma machine locale, ça marche bien.

const redis = require('redis'); 
const redisPassword = "password" ; 
const client = redis.createClient({ 
      host : '127.0.0.1', 
      no_ready_check: true, 
      auth_pass: redisPassword,                                       
});        

client.on('connect',() => { 
      global.console.log("connected"); 
});        

client.on('error', err => {  
      global.console.log(err.message) 
});        

client.set("foo", 'bar');   

client.get("foo", function (err, reply) { 
     global.console.log(reply.toString()) 
}) 

et le noeud d'exécution Client.js affichera:

connected

bar

NOAUTH Authentification requise est causée par lorsque Redis commande processus, il a trouvé le client est pas authentifié il se plaignait avec elle.

Je suppose que peut-être le redisUrl que vous donnez à createClient a un problème, essayez de le déboguer ou de changer à la façon de mon code pour essayer. J'espère que vous pouvez le réparer.

Et encore une chose: le client.auth (redisPassword) n'est pas nécessaire car si vous définissez une option auth_pass ou mot de passe, le client redis enverra automatiquement la commande auth au serveur avant toute commande.

+0

merci pour le conseil avec l'option auth_pass. C'est utile. Quant à la question - j'ai recréé une instance avec redis (nous utilisons flynn et heroku sous le capot) et maintenant ça marche –