【问题标题】:node.js Project Works on Local Machine, Issues when Deployed on Herokunode.js 项目在本地机器上工作,在 Heroku 上部署时出现问题
【发布时间】:2018-04-25 17:03:57
【问题描述】:

我有一个我一直在处理的 node.js + Express 项目,当我在我的机器上运行它时它一直在工作。我已经为我的 Express API 设置了端口 4200,使用

var port = 4200;

在 app.js 中

我在 React 中使用 axios 访问 API:

axios.get('https://localhost:4200/posts ... etc

当我在我的机器上运行它时,这一切正常,但是当我使用 Heroku 部署它时,我得到了这个错误:

GET https://localhost:4200/postsnet::ERR_CONNECTION_REFUSED

错误:网络错误 在 createError (createError.js:16) 在 XMLHttpRequest.handleError (xhr.js:87)

我该如何解决这个问题?

【问题讨论】:

  • 我想您应该尝试将 localhost:4200/posts 更改为您获得的 heroku 域,例如 XXXXX.herokuapp.com
  • 我尝试将每次出现的 localhost:4200 替换为 XXXXXX.herokuapp.com,但现在每当我尝试访问 API 时都会出现 404 未找到。

标签: javascript node.js heroku web-deployment web-hosting


【解决方案1】:

我想强调两点:

1) 引用自https://devcenter.heroku.com/articles/deploying-nodejs#specifying-a-start-script

Web 进程类型中的命令必须绑定到 PORT 环境变量中指定的端口号。否则,测功机将不会启动。

所以你应该做的是

var port = process.env.PORT || 4200;

现在在本地系统上工作时将使用 4200 端口,而在部署在由环境变量分配的 heroku 端口时将使用。

2) 根据您的问题,您说您正在使用axios.get('https://localhost:4200/posts ... etc。应用部署时应该如何使用localhost

将 localhost 更改为您在 Heroku 上创建应用程序时获得的任何域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-30
    • 2017-09-01
    • 1970-01-01
    • 2021-12-31
    • 2020-03-11
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多