在 Heroku 上的 NodeJS 中创建两个 Redis To Go 客户端时出错
Error creating two Redis To Go clients in NodeJS on Heroku
我在使用 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);
我在尝试启动应用程序时遇到此错误:
Error: Ready check failed: NOAUTH Authentication required. Mar 31
21:52:18 <> app/web.1: at 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")
})
以上对你有用吗?
我在使用 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);
我在尝试启动应用程序时遇到此错误:
Error: Ready check failed: NOAUTH Authentication required. Mar 31 21:52:18 <> app/web.1: at 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")
})
以上对你有用吗?