node.js 项目在本地机器上工作,在 Heroku 上部署时出现问题

Posted

技术标签:

【中文标题】node.js 项目在本地机器上工作,在 Heroku 上部署时出现问题【英文标题】:node.js Project Works on Local Machine, Issues when Deployed on 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 未找到。 【参考方案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 上创建应用程序时获得的任何域。

【讨论】:

以上是关于node.js 项目在本地机器上工作,在 Heroku 上部署时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Node.js + Mongoose 可以在本地工作,但不能在 Heroku 上工作

如何在 heroku 上远程调试 node.js 应用程序?

如何使用 XAMPP 或 node.js 使 AJAX 在本地服务器上工作

本地网络上的 Socket.io/node.js?

在 Node.js 中获取本地 IP 地址

在服务器上找不到模块“../models/user”Node.js