请求自己部署在Heroku上的Node.js

时间:2018-09-02 20:18:54

标签: javascript node.js heroku axios

我在Heroku上部署了Node Express应用程序。主页需要大约50个对外部服务的HTTP请求才能显示数据。这些请求花了很长时间,所以我使用了缓存。

现在,我打算定期向我本人请求该网页,以强制Node继续刷新和缓存数据。这样,用户无需等待1分钟即可看到页面。

以下代码可在本地完美运行。但是在生产环境(Heroku)下,我得到了Error: connect ECONNREFUSED

setInterval(function() {
  var url = "http://127.0.0.1:" + (process.env.PORT || 3000);
  try {
    http.get(url, {})
  } catch (err) {
    console.error('Error refreshing data')
    console.error(err)
  }
}, 1 * 60 * 1000)

我尝试过:

  • http://127.0.0.1:" + (process.env.PORT || 3000)
  • https://127.0.0.1:" + (process.env.PORT || 3000)
  • 0.0.0.0

找到正确的IP /主机和端口的任何方法吗?

更新

主机名(https://nameofapp.herokuapp.com/)实际上起作用。但是有什么方法可以在不认识房东的情况下给自己打电话吗?

1 个答案:

答案 0 :(得分:1)

您可以使用request-myself

尝试以下代码:

const requestMyself = require('request-myself');
const option = {
    hostname: process.env.BASE_URL,
    timeout: process.env.TIME_IDLING
};

app.use(requestMyself(option, (error, res) => {
    if (error) {
        console.error('RequestMyself error:', error);
    } else {
        console.info('RequestMyself statusCode:', res.statusCode);
    }
}));

设置环境变量BASE_URL是应用程序的URL,TIME_IDLING是请求超时(或者您可以在定义option时进行更改)

如果您有任何问题,可以随时创建一个问题

选中dyno-metadata,以自动生成HEROKU_APP_NAME和一些envprocess.env.HEROKU_APP_NAME),并使用它来获取主机