3

Nodejitsu 経由でプロビジョニングした IrisCouch でホストされている 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)

何が問題になる可能性があるかについてのアイデアはありますか?

4

2 に答える 2

2

通常、CLI テスト中にそのエラーが発生します。

問題は、ready イベントが発行される前に auth の呼び出しを行う必要があることだと思います ( robertklepが言及しているように)。CLI を使用してテストしている場合、行末で Enter キーを押すとすぐにクライアントが接続を開始しvar client = redis.createClient(port, host);、AUTH コマンドを送信する前に何らかの IDLE コマンドを送信する可能性があります。ERR operation not permittedエラー。

tl;dr

CLI テストを行う場合は、次のコードを使用して 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>);
于 2013-06-27T11:12:50.580 に答える