Я новичок в узле и redis и настраиваю простой сервер с экспресс-связью для связи с redis.
После запуска redis-сервера я запускаю сервер узла app.js
app.js запускается и запускается, когда я использую файл redis.conf без requirepass, но когда я добавляю requirepass, приложение вылетает при запуске.Я могу запустить redis-cli в терминале, и там работает пароль.
Я получаю этот стек Uncaught ошибок при запуске 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
Я все еще пытаюсь разобраться с асинхронной природой узла, поэтому я подумал, что это может быть случай, когда аутентификацияКоманда вызывалась до того, как было установлено соединение с сервером redis, но когда я поместил команду auth в обратный вызов для client.on (событие «connect», я получил тот же стек ошибок.
Мне было интересноесли перехват исключения позволил бы серверу подмести его под ковер и продолжить, поэтому я поймал его, используя объект процесса. Сервер, кажется, продолжает работать, но не отображает какие-либо страницы в браузере, поэтому я предполагаю, что это исключение можетне игнорируется.