저는 redirect를 사용하는 노드가 새로 생겼으며 express가있는 간단한 서버를 설정하고 있습니다.redis.conf에서 requirepass를 사용할 때 express node.js 앱을 redis 서버에 연결하는 중 오류가 발생했습니다.
레디 스 서버를 시작한 후, 나는 requirepass없이 redis.conf 파일을 사용하면 노드 서버가
app.js 시작 및 실행을 app.js 시작하지만 시작시 requirepass에게 응용 프로그램 충돌을 추가 할 때 . 터미널에서 redis-cli를 실행할 수 있으며 암호가 거기에서 작동합니다. app.js 실행할 때
나는이 처리되지 않는 오류 스택을 얻을 :throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Uncaught, unspecified 'error' event.
at RedisClient.emit (events.js:47:15)
at Command.callback (/node_modules/redis/index.js:232:29)
at RedisClient.return_error (/node_modules/redis/index.js:382:25)
at RedisReplyParser.<anonymous> (/node_modules/redis/index.js:78:14)
at RedisReplyParser.emit (events.js:64:17)
at RedisReplyParser.send_error (/node_modules/redis/lib/parser/javascript.js:265:14)
at RedisReplyParser.execute (/node_modules/redis/lib/parser/javascript.js:124:22)
at RedisClient.on_data (/node_modules/redis/index.js:358:27)
at Socket.<anonymous> (/node_modules/redis/index.js:93:14)
at Socket.emit (events.js:64:17)
여기 app.js 여기
var REDIS_PASS = "foobar";
var express = require('express');
var app = module.exports = express.createServer();
var io = require('socket.io').listen(app);
var redisStore = require('connect-redis')(express);
var redis = require('redis');
var rdb = redis.createClient();
rdb.auth(REDIS_PASS, function(){ console.log('connected to redis-server');});
rdb.on("error",function(err){
console.log("REDIS CLIENT ERROR:" + err + '\n\n' + err.stack);
});
에서 관련 코드가 redis.conf 파일을 것입니다을
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
#my hackerproof password:
requirepass foobar
나는 여전히 노드의 비동기 성질에 대해 머리를 쓰려고 노력하고있다. 그래서 이것은 아마도 t 그는 auth 명령이 redis-server에 연결되기 전에 호출되었지만 auth 명령을 client.on ("connect"이벤트에 대한 콜백에 넣었을 때 동일한 오류 스택을 받았습니다.
예외를 잡으면 서버가 카펫 밑으로 쓸어 넘기고 계속해서 프로세스 객체를 사용하여 잡았는지 궁금했습니다. 서버는 계속 실행되지만 브라우저에 어떤 페이지도 제공하지 않으므로이 예외를 무시할 수 없다고 생각합니다.
[API] (https://github.com/mranney/node_redis)에 언급 된 redis 클라이언트가 내 보낸 "error"이벤트에 대한 수신기를 설정하고 해당 내용이 무엇인지 확인하고 (출력물을 출력 해주세요). – yojimbo87
나는 node_redis 문서를보고 CreateClient가 옵션 매개 변수를 취할 수 있음을 알았습니다. 내 CreateClient를 다음과 같이 편집했습니다 : var opts = { 'auth_pass': true}; var rdb = redis.createClient (6379, '127.0.0.1', opts); 이제는 제대로 작동하고있는 것 같습니다 – Jason
추가 검사에서 문제는 연결 설정과 함께 사용하여 발생했다고 생각합니다. 주석을 달고 앱 구성에서 제거하면 CreateClient 호출에 options 매개 변수를 추가하지 않아도 문제가 사라집니다. – Jason