我创建了一个使用 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 失败 - 连接 127.0.0.1:6379
您收到该错误是因为您第一次尝试使用redis.createClient()
创建 Redis 客户端。 默认情况下,它将连接到127.0.0.1:6379
。
它在本地主机上工作正常,因为它不会进入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
}