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 应用程序?