簡體   English   中英

錯誤:Redis 連接到 127.0.0.1:6379 失敗 - 連接 ECONNREFUSED 127.0.0.1:6379 Heroku

[英]Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 Heroku

我創建了一個使用 Redis 的 Nodejs 服務器。當我在我的機器上運行它時,它運行良好。 但是當我嘗試將代碼推送到 heroku 時出現上述錯誤。我已經安裝了 Redis togo,我可以在我的配置變量中看到REDISTOGO_URL

在我做了一些 Stackoverflow 帖子之后:

let RedisStore = require('connect-redis')(session)

let redisClient = redis.createClient()
if(process.env.REDISCLOUD_URL){
    let redisURL = url.parse(process.env.REDISCLOUD_URL);
    redisClient = redis.createClient(redisURL)
}

我的應用程序在開發中運行良好,但是當我嘗試在 heroku 中啟動我的應用程序時,當我執行heroku logs --tail時出現以下錯誤:

錯誤:Redis 連接到 127.0.0.1:6379 失敗 - 連接 ECONNREFUSED 127.0.0.1:6379

您收到該錯誤是因為您首先嘗試使用redis.createClient()創建 redis 客戶端。 默認情況下,它將連接到127.0.0.1:6379

它在本地主機上工作正常,因為它不會 go 進入if (process.env.REDISCLOUD_URL和本地 redis 可用。

為了解決這個問題,

let redisClient
if(process.env.REDISCLOUD_URL){
    let redisURL = url.parse(process.env.REDISCLOUD_URL);
    redisClient = redis.createClient(redisURL)
} else {
    redisClient = redis.createClient()
}

您的代碼似乎需要一個REDISCLOUD_URL環境變量。 如果您已經定義REDISTOGO_URL ,那么這將解釋它為什么不起作用。

Heroku要求你在創建redisClient時提供一個REDISCLOUD_URL環境變量。

因此您應該在創建 Redis 客戶端時提供 REDISCLOUD_URL。

let redisClient
if(process.env.REDISCLOUD_URL){
    redisClient = redis.createClient(process.env.REDISCLOUD_URL)
} else {
    redisClient = redis.createClient()//for running locally
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM