我创建了一个使用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
答案 0 :(得分:2)
您遇到此错误是因为您首先尝试使用redis.createClient()
创建Redis客户端。默认情况下,它将连接到127.0.0.1:6379
。
它在localhost上运行良好,因为它不会进入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()
}
答案 1 :(得分:1)
您的代码似乎期望使用REDISCLOUD_URL
环境变量。如果您定义了REDISTOGO_URL
,那么这将解释为什么它不起作用。