我有一个运行在使用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
环境变量设置正确,如果我从其中一个模块中删除代码,那么它开始时不会出错。我可以创建一个客户端并将其传递给每个模块,但我真的更想了解问题的真正原因。
有人能解释一下发生了什么事吗?
我无法重现您描述的确切问题,但我可以通过执行以下来绕过身份验证问题
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")
})
以上内容对你有用吗?