我已经为这个问题苦苦思索了一段时间,但似乎无法弄明白。我正在尝试将 Django 应用程序部署到前端使用 React 的 heroku。我对 react 还很陌生,所以我可能在这里遗漏了一些基本的东西。
我现在有一个 heroku 应用程序,它有两个构建包(heroku/nodejs 和 heroku/python)。要在本地运行应用程序,我使用 python manage.py runserver
以及端口 3000 上的 node server.js
。我知道 Heroku 只允许一个端口接收 HTTP 请求,所以我认为问题就在那里。
我的主要问题是:要在 Heroku 应用程序上使用 Django 和 React,我需要有两个单独的应用程序(一个用于 Django,一个用于 React)还是我可以只维护一个应用程序?
我一直在搜索 this repository而且似乎只使用了一个应用程序。但是我看不到 Node 服务器是如何工作的。
感谢您的任何澄清或向正确方向的插入!如果我需要澄清我的问题,请告诉我。
编辑: 我尝试过的其他一些事情:
- 正在关注 this tutorial
- 将
heroku-postbuild
脚本添加到启动 Node 服务器的package.json
文件中。不过,这会阻止构建过程继续启动 Django 应用程序。 - 我遇到了 this blog post也是,但关于应用程序是否可以在同一个 Heroku 应用程序中或必须不同(如 #1 中的教程),我似乎得到了相互矛盾的信息。
最佳答案
除非您计划实现服务器端渲染(如果您是 React 新手,则不建议这样做),否则您只需要一台服务器。
您缺少的是一种生成包含所有反应代码的 javascript 包的方法。然后,您可以像处理任何其他 HTML/CSS/JS 文件一样将该 bundle 发送给客户端。
尝试使用类似 webpack 的工具生成一个 javascript 包。如果可能,将其放在 heroku-postbuild
步骤中,否则,只需在部署更新之前生成包
关于node.js - 在 Heroku 上部署 React 和 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41249529/