如何使本地Heroku应用连接到远程REDIS?

3

我对Heroku/Redis还不熟悉。我创建了一个基本的node.js和express应用程序,并添加了一个REDIS插件。

heroku addons:create heroku-redis:hobby-dev -a MyApp

我有一个index.js文件,从中服务器在5000端口上运行。

const express = require('express')
const path = require('path')
const PORT = process.env.PORT || 5000
const client = require('redis').createClient(process.env.REDIS_URL);

express()
  .use(express.static(path.join(__dirname, 'public')))
  .set('views', path.join(__dirname, 'views'))
  .set('view engine', 'ejs')
  .get('/', (req, res) => res.render('pages/index'))
  .listen(PORT, () => console.log(`Listening on ${ PORT }`))

我的代码库已经连接到了我在Heroku上运行的个人GitHub账户,应用程序运行良好。但是当我尝试在本地运行它时,似乎它试图连接到本地的REDIS,因此当我运行node命令(node index.js)时出现以下错误:

Listening on 5000
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379

我非常新手,但我认为环境不对:process.env.REDIS_URL,我该如何直接连接到Heroku云而不是我的本地云?
谢谢。
2个回答

3
  1. Copy Heroku config vars to your local .env file

    heroku config -s > .env
    
  2. Run your app locally using the Heroku Local command

    heroku local
    

    When you start your app using heroku local, the .env file is read, and each name/value pair is inserted into the environment, to mimic the action of config vars.

了解更多详情,请访问https://devcenter.heroku.com/articles/heroku-local


我找不到 .env 文件,我需要创建一个吗?如果需要,应该放在哪里? - HGB
嘿!上面的命令似乎创建了一个(抱歉,我很新手),所以我认为我应该忽略终端中的以下警告 heroku local [WARN] Cannot read property '1' of null [OKAY] package.json file found - trying 'npm start' [OKAY] Loaded ENV .env File as KEY=VALUE Format [WARN] Cannot read property '1' of null [OKAY] package.json file found - trying 'npm start' - HGB
如果我按照package.json运行node index.js,它不起作用,所以我认为我每次都需要运行heroku local - HGB
@HGB,没错,你应该使用heroku local而不是node ...,它会将.env文件中的变量注入到节点的process中。 - andrii

-1

var client = redis.createClient(port, hostname);

变量客户端=redis.createClient(端口,主机名);


1
请问您能否举个例子来说明如何使用客户端变量? - HGB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接