我在使用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
环境变量设置正确,如果我从其中一个模块中删除代码,那么它会正常启动而没有错误。我可以创建一个客户端并将其传递给每个模块,但我真的更愿意理解这里导致问题的原因。
有人可以解释发生了什么吗?
答案 0 :(得分:2)
我无法重现您描述的确切问题,但我能够通过执行以下操作解决身份验证问题
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")
})
以上是否适用于您?