繁体   English   中英

将 Nodejs 应用程序连接到 Heroku 上的 Redis 时出错

[英]Error connecting Nodejs app to Redis on Heroku

我有一个 Nodejs 应用程序,我使用 Redis 来处理会话。 我正在使用connect-redis npm package。 现在,我将相同的 Nodejs 应用程序部署到 heroku,但我不知道是否有办法让 Redis 服务器与我在 Heroku 中的 Nodejs 应用程序一起运行。

我在heroku logs --tail

2020-04-09T03:40:31.880266+00:00 应用程序 [web.1]:投掷者; // 未处理的“错误”事件 2020-04-09T03:40:31.880267+00:00 app[web.1]: ^ 2020-04-09T03:40:31.880267+00:00 app[web.1]: 2020- 04-09T03:40:31.880267+00:00 应用程序 [web.1]:错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379 2020-01446745A1825B862F8727AE63BCE4Z app[web.1]:在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1137:16) 2020-04-09T03:40:31.880268+00:00 app[web.1]:发出“错误”事件RedisClient 实例位于:2020-04-09T03:40:31.880268+00:00 app[web.1]:在 RedisClient.on_error (/app/node_modules/redis/index.js:341:14) 2020-04-09T03: 40:31.880269+00:00 app[web.1]:在 Socket。 (/app/node_modules/redis/index.js:222:14) 2020-04-09T03:40:31.880269+00:00 app[web.1]: 在 Socket.emit (events.js:311:20) 2020 -04-09T03:40:31.880269+00:00 app[web.1]: 在 emitErrorNT (internal/streams/destroy.js:92:8) 2020-04-09T03:40:31.880270+00:00 app[web .1]:在 emitErrorAndCloseNT (internal/streams/destroy.js:60:3) 2020-04-09T03:40:31.880270+00:00 app[web.1]: 在 processTicksAndRejections (internal/process/task_queues.js: 84:21) { 2020-04-09T03:40:31.880278+00:00 app[web.1]: errno: 'ECONNREFUSED', 2020-04-09T03:40:31.880279+00:00 app[web.1] : 代码: 'ECONNREFUSED', 2020-04-09T03:40:31.880279+00:00 app[web.1]: 系统调用: 'connect', 2020-04-09T03:40:31.880279+00:00 app[web.1] 1]:地址:'127.0.0.1',2020-04-09T03:40:31.880280+00:00 app[web.1]:端口:6379 2020-04-09T03:40:31.880280+00:00 app[web .1]:}

我还添加了一个名为 Heroku Redis 的插件,但我收到相同的错误消息

在 Heroku 上,您的 REDIS 服务器不再位于 127.0.0.1

我建议在 Heroku 上找出 Redis 服务器的 IP 地址。

并更改 Redis 服务器的 Node.JS 配置。

在寻找此错误的答案三天后,我将分享对我有用的方法,获得愿景。 I'm using this Heroku Redis add-on you can install via heroku-cli or directly on the dashboard on the heroku website: Resources> click Button "Find more add-ons" and search for Heroku Redis

通过heroku-cli:

heroku 插件:创建 heroku-redis:hobby-dev

  • 创建BD Redis 在heroku页面获取变量数据:

    资源> 附加组件> Heroku Redis> 设置

  • 在heroku中创建并配置为Redis环境变量:

REDIS_PASSWORD - 提供由 heroku 生成的密码:

REDIS_URL - 提供由 heroku 创建的主机

REDIS_PORT - 提供由 heroku 生成的端口

应用中Redis配置文件内容:

redis.js

if (process.env.NODE_ENV === 'development') {
  export default {
   host: process.env.REDIS_URL,
   port: process.env.REDIS_PORT,
 };
} else {
  export default {
   host: process.env.REDIS_URL,
   port: process.env.REDIS_PORT,
   password: process.env.REDIS_PASSWORD,
  };
};

参考: https://devcenter.heroku.com/articles

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM