2015-04-01 90 views
0

我有一個在使用NodeJS構建的Heroku應用程序上運行的單個Web dyno,它在納米(免費)層上使用單個Redis To Go數據庫。該層應該支持多達十個連接,但如果我嘗試使用連接到它在兩個不同的模塊:在Heroku上的NodeJS中創建兩個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)

環境變量設置正確,如果我從其中一個模塊中刪除代碼,那麼它可以毫無錯誤地正常啓動。我可以創建一個客戶端並將其傳遞給每個模塊,但我真的很想了解這裏實際導致問題的原因。

有人可以解釋發生了什麼事嗎?

回答

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") 
}) 

爲您做上述工作?

+0

我現在就去看看會發生什麼,謝謝! – 2015-04-01 23:17:57

+0

哇,我真是個白癡。在第一個模塊中,我有代碼執行身份驗證,如果(url.auth) \t redis.auth(url.auth.split(':')[1]); }' ..我沒有把它放在另一個!不過,更好的錯誤信息會有所幫助。 – 2015-04-02 00:44:42