Nicht, um eine Verbindung zu gehosteten redis: Ready-überprüfung fehlgeschlagen: FEHLER operation not permitted
Ich versuche eine Verbindung zu einer gehosteten redis auf IrisCouch, die ich bereitgestellt, über Nodejitsu.
Was ich denke sind die relevanten Teile meiner server.js :
var redisUrl = require('url').parse(config.REDIS_CONNECTION_URI);
var client = require('redis').createClient(redisUrl.port, redisUrl.hostname);
Habe ich nicht alle Interaktion mit dem client in meinem server.js doch, was ist der Grund, warum ich denke, es ist seltsam, dass es wirft die "operation nicht erlaubt", da im Grunde die einzige operation, die ich tun müssen, ist zu verbinden. Ich habe nicht einen redis.conf-Datei, und ich glaube, ich sollte nicht müssen, da ich nicht als host für die redis-Instanz selbst.
Log:
Express server listening on port 3000
/Users/soroushhakami/dev/projects/projectx/node_modules/redis/index.js:504
throw callback_err;
^
Error: Ready check failed: ERR operation not permitted
at RedisClient.on_info_cmd (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/index.js:317:35)
at Command.RedisClient.ready_check.send_anyway [as callback] (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/index.js:365:14)
at RedisClient.return_error (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/index.js:500:25)
at ReplyParser.RedisClient.init_parser (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/index.js:260:14)
at ReplyParser.EventEmitter.emit (events.js:96:17)
at ReplyParser.send_error (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/lib/parser/javascript.js:293:10)
at ReplyParser.execute (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/lib/parser/javascript.js:176:22)
at RedisClient.on_data (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/index.js:476:27)
at Socket.<anonymous> (/Users/soroushhakami/dev/projects/projectx/node_modules/redis/index.js:79:14)
at Socket.EventEmitter.emit (events.js:96:17)
Irgendwelche Ideen auf, was das problem sein könnte?
- Sind Sie sicher, dass der Redis-server keine Authentifizierung erforderlich ist?
- Es funktioniert. Aber ich wollte mit client-auth.auth(Benutzername und Passwort), nachdem der client die ich erstellt hatte, den client. Auch der Fehler ist zu sagen, dass die Bereit-check fehlgeschlagen ist, nicht, dass die Auth fehlgeschlagen. Aber vielleicht ist die Fehlermeldung nicht zu vermitteln, das eigentliche problem?
- Dieser sagt: "Ihr Anruf an den client.auth() sollte nicht innerhalb der ready-handler. Wenn Sie das tun, das falsch, client sendet eine Fehlermeldung, die sieht so ähnlich aus wie dieser Fehler: Fertig-überprüfung fehlgeschlagen: ERR-operation nicht gestattet', das ist, was Sie sehen.
- Ich sehe. Aber ich bin nicht die Durchführung beliebiger Anrufe für den Kunden.auth hier in diesem code, aber es funktioniert nicht.
- ich habe eine bestehende remote-redis wir hatte und es vergessen hatte requirepass Satz in seiner Breite redis.conf
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie rufen Sie
client.auth()
direkt nach dem erstellen des client:Das verwirrende ist, dass, wenn Sie don ' T call
.auth()
aufclient
aber sonst nichts entweder, erhalten Sie eine fehlgeschlagene bereit-check-Fehler.Ich habe in der Regel, dass Fehler beim CLI-Tests.
Ich denke, das Problem ist, dass der Aufruf von auth sollte erfolgen, bevor die ready-Ereignis wird emittiert (wie robertklep erwähnt). Wenn Sie die Tests mithilfe der CLI der client startet die Verbindung, sobald Sie auf die enter-Taste, die am Ende Ihres
var client = redis.createClient(port, host);
Linie und wahrscheinlich sendet eine IDLE-Befehl von einer Art, bevor Sie selbst die chance bekommen, senden Sie den AUTH-Befehl auslöstERR operation not permitted
Fehler.tl;dr
wenn CLI-Tests, erstellen Sie Ihre redis-client mit dem folgenden code: