Node-Redis: проверка готовности не удалась - требуется аутентификация NOAUTH

У меня странное поведение Redis:

const redis = require('redis');
const { REDIS_URL: redisUrl, REDIS_PASSWORD: redisPassword } = process.env;

const client = redis.createClient(redisUrl, {
  no_ready_check: true,
  auth_pass: redisPassword
});

client.on('connect', () => {
  redisPassword && client.auth(redisPassword);
});

client.on('error', err => {
  global.console.log(err.message)
});

Но все время я получаю следующую ошибку:

бросать; // Необработанное событие "ошибка"

ReplyError: Ошибка проверки готовности: требуется проверка подлинности NOAUTH.

Почему необработанный? Я установил обработчик onerror
Почему проверка готовности не удалась? Я отключил его в настройках


person Enthusiastic Developer    schedule 14.08.2017    source источник


Ответы (1)


Я не уверен, почему ваш код выдаст эту ошибку. Но я пробую этот код на своей локальной машине, он работает хорошо.

const redis = require('redis');
const redisPassword = "password" ; 
const client = redis.createClient({
          host : '127.0.0.1',  
          no_ready_check: true,
          auth_pass: redisPassword,                                                                                                                                                           
});                               
                                  
client.on('connect', () => {   
          global.console.log("connected");
});                               
                                  
client.on('error', err => {       
          global.console.log(err.message)
});                               
                                  
client.set("foo", 'bar');         
                                  
client.get("foo", function (err, reply) {
        global.console.log(reply.toString())
})

И запустить узел client.js выведет:

связано

бар

NOAUTH Требуемая аутентификация вызвана тем, что когда команда процесса redis обнаружила, что клиент не аутентифицирован, поэтому он пожаловался на это.

Я предполагаю, что у redisUrl, который вы указываете для createClient, есть какая-то проблема, попробуйте отладить его или изменить способ попытки моего кода. Надеюсь, вы сможете это исправить.

И еще одно: client.auth(redisPassword) не нужен, потому что если вы установите параметр auth_pass или пароль, клиент redis автоматически отправит команду аутентификации на сервер перед любой командой.

person GuangshengZuo    schedule 15.08.2017
comment
спасибо за совет с опцией auth_pass. Это полезно. Что касается проблемы - я воссоздал экземпляр с Redis (мы используем flynn и heroku под его капотом), и теперь он работает - person Enthusiastic Developer; 16.08.2017
comment
Привет, я следую твоему же коду, и он все еще отправляет мне ту же ошибку. Но я понимаю, что он создает ключ в моей базе данных, но не позволяет запускать мое приложение. Что я могу сделать? Ошибка Mi следующая: ReplyError: Ошибка проверки готовности: Требуется аутентификация NOAUTH. at parseError (/home/mauricio/Documents/lisapp/pos_lisa/node_modules/redis-parser/lib/parser.js:193:12) at parseType (/home/mauricio/Documents/lisapp/pos_lisa/node_modules/redis-parser/ библиотека/parser.js:303:14) - person maoooricio; 24.10.2018
comment
Вы правильно настроили свой сервер Redis? requirepass и защищенный режим - person GuangshengZuo; 25.10.2018