Heroku:如何部署一个节点应用程序,客户端和服务器在不同的端口上运行?

Posted

技术标签:

【中文标题】Heroku:如何部署一个节点应用程序,客户端和服务器在不同的端口上运行?【英文标题】:Heroku: How to deploy a node app with client and server running on different ports? 【发布时间】:2018-02-10 09:02:11 【问题描述】:

我有一个 nodejs API 作为服务器,React/Redux 应用作为客户端,位于一个 git 项目中:https://github.com/lafisrap/fcc_nightlife.git

我想使用 heroku cli 在 Heroku 上部署它。

package.json 中的 scripts 部分是:

  "scripts": 
    "start-dev": "concurrently \"yarn run server\" \"yarn run client\"",
    "start": "yarn run server | yarn run client",
    "server": "babel-node server.js",
    "client": "node start-client.js",
    "lint": "eslint ."
  ,

start-client.js:

const args = [ 'start' ];
const opts =  stdio: 'inherit', cwd: 'client', shell: true ;
require('child_process').spawn('yarn', args, opts);

在客户端文件夹中,我有另一个 package.json 定义了客户端。它的脚本部分:

  "scripts": 
    "start": "react-scripts start",
  

我做到了:

heroku 创建 git push heroku 大师

API 运行良好。但我不知道如何启动/访问客户端。

【问题讨论】:

【参考方案1】:

不能在一个 Heroku 应用中部署两项服务。简而言之,您必须将它们部署到单独的 Heroku dynos 以部署两个应用程序。

this *** answer 为类似问题提供了更多信息。

PS:在构建 React 文件后,始终可以选择从 API 服务器提供 JS 文件。

希望这会有所帮助!

【讨论】:

这不是真的,看我下面的回答***.com/a/54059054/711672 @MarkJackson 构建反应应用程序并将其用作静态字段始终是一种选择。不确定这是否使我的回答不真实。无论如何我都会更新它以呈现更大的画面。【参考方案2】:

此 repo 显示了 Node.js 的设置,该设置为在单个 Heroku dyno 上运行的 React 前端提供服务:https://github.com/mars/heroku-cra-node 我能够以此为指导启动并运行一个。

【讨论】:

【参考方案3】:

实际上你一定不想在不同的端口上运行。因为cors和其他问题。在 nodejs 中实现代理或将 nginx 实现为服务器和客户端请求的网关。

【讨论】:

以上是关于Heroku:如何部署一个节点应用程序,客户端和服务器在不同的端口上运行?的主要内容,如果未能解决你的问题,请参考以下文章

如何将使用 Webpack 的节点部署到 heroku

如何将使用 Rollup 的节点部署到 heroku

将 Ember.js 应用程序部署到 Heroku 时如何解决“无法下载节点 14.18.0”?

heroku 的下一个/节点应用程序部署错误

将微服务节点 js 应用程序部署到 heroku

节点未在 Heroku 上正确部署的 Ionic 应用程序