无法连接到托pipe的redis:就绪检查失败:ERR操作不允许

我试图连接到通过Nodejitsuconfiguration的IrisCouch上托pipe的redis。

认为是我的server.js的相关部分:

var redisUrl = require('url').parse(config.REDIS_CONNECTION_URI); var client = require('redis').createClient(redisUrl.port, redisUrl.hostname); 

我没有任何与我的server.js客户端的任何交互,这就是为什么我认为它是抛出“操作不允许”的奇怪,因为基本上我做的唯一的操作是连接。 我没有redis.conf文件,我相信我不应该需要一个,因为我自己不主持redis实例。

日志:

  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) 

任何想法可能是什么问题?

您需要在创build客户端后直接调用client.auth()

 var client = require('redis').createClient(redisUrl.port, redisUrl.hostname); client.auth(PASSWORD); 

令人困惑的是,当你不在client调用.auth()但是没有其他的时候 ,你会得到一个失败的准备检查错误。

我通常在CLItesting中遇到这个错误。

我猜这个问题是,应该在ready事件发出之前调用auth(就像robertklep提到的那样)。 当你使用CLI进行testing时,只要你点击var client = redis.createClient(port, host);末尾的回车键,客户端就开始连接var client = redis.createClient(port, host); 在发送AUTH命令之前,可能会发送某种types的IDLE命令,这会触发ERR operation not permitted错误。

TL;博士

当进行CLItesting时,使用以下代码创build您的redis客户端:

 var redis = require('redis'); function createClient(port, host, pass) { var client = redis.createClient(port, host); client.auth(pass); return client; } var r = createClient(<MYPORT>, <MYHOST>, <MYPASS>);