【问题标题】:Error creating two Redis To Go clients in NodeJS on Heroku在 Heroku 上的 NodeJS 中创建两个 Redis To Go 客户端时出错
【发布时间】:2015-06-05 15:50:52
【问题描述】:

我在使用 NodeJS 构建的 Heroku 应用程序上运行了一个 Web dyno,它使用 Nano(免费)层上的单个 Redis To Go 数据库。该层应该最多支持十个连接,但是如果我尝试在两个不同的模块中使用以下方法连接到它:

var redis_url = require('url').parse(process.env.REDISTOGO_URL);
var redis = require('redis').createClient(redis_url.port, redis_url.hostname);

我在尝试启动应用程序时收到此错误:

错误:就绪检查失败:需要 NOAUTH 身份验证。 3月31日 21:52:18 app/web.1: 在 RedisClient.on_info_cmd (/app/node_modules/redis/index.js:380:35)

REDISTOGO_URL 环境变量设置正确,如果我从其中一个模块中删除代码,则它可以正常启动,没有错误。我可以创建一个客户端并将其传递给每个模块,但我真的更愿意了解这里实际导致问题的原因。

有人可以解释发生了什么吗?

【问题讨论】:

    标签: node.js heroku redis redistogo


    【解决方案1】:

    我无法重现您描述的确切问题,但我能够通过执行以下操作来解决身份验证问题

    var redis_url = require('url').parse(process.env.REDISTOGO_URL)
    var redisClient1 = require('redis').createClient(redis_url.port, redis_url.hostname, {auth_pass: redis_url.auth.split(":")[1]});
    redisClient1.on("ready", function(){
      console.log("one ready")
    })
    
    var redisClient2 = require('redis').createClient(redis_url.port, redis_url.hostname, {auth_pass: redis_url.auth.split(":")[1]});
    redisClient2.on("ready", function(){
      console.log("two ready")
    })
    

    以上对你有用吗?

    【讨论】:

    • 哇,我真是个白痴。在第一个模块中,我有代码来执行 auth if(url.auth) { redis.auth(url.auth.split(':')[1]); } .. 我没有放入另一个模块!不过,更好的错误消息会有所帮助。
    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多