【问题标题】:Connecting React frontend and Node.js backend at Heroku在 Heroku 连接 React 前端和 Node.js 后端
【发布时间】:2021-09-16 01:12:24
【问题描述】:

我已经将我的简单 React 应用程序部署到 Heroku - https://projectslist.herokuapp.com 它工作得很好,除了服务器部分根本不工作。我看过日志,它说我唯一的服务器方法 - /sendmail - 返回错误 404。我该如何解决这个问题?我想我应该在 package.json 文件中编辑一些东西,但我不确定我应该改变什么。 这是我的 github 仓库 - https://github.com/VasVV/Projects-list

【问题讨论】:

  • 你的 Procfile 是什么?另外,在 package.json 中,您没有运行服务器的脚本,您如何确保服务器确实在运行?我认为 create-react-app 启动了一个 webpack-dev-server。捆绑你的反应代码并使用 express.static 来托管它。
  • @AritraChakraborty 我没有 Procfile。至于脚本,如果我按如下方式编辑我的 package.json:“start”:“react-scripts start && node server”会起作用吗?捆绑我的代码并使用 express.static 托管是什么意思?
  • 也许为您的服务器使用不同的 Heroku 应用程序会解决您的问题。确保更新您的 API URL。

标签: javascript node.js reactjs heroku


【解决方案1】:

尝试将服务器文件放在根目录文件夹中,将其他所有文件放在根目录下的客户端文件夹中:

1.) 把你的 server.js 放到根目录

2.) 将这些命令添加到您的根 package.json...

"scripts": {
    "client-install": "npm install --prefix client",
    "start": "node server.js",
    "server": "nodemon server.js",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
  },
  "proxy": "http://localhost:4242/"

3.) 创建一个客户端文件夹并将您的 src 和 public 文件夹放入其中。

4.) 将这些命令添加到您的客户端文件夹 package.json...

  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

您的根文件结构应如下所示:

Root
  client
    Public
    Src
    package.json
  server.js
  package.json

5.) 将所有与服务器相关的内容移动到根文件夹中,这样您就不必 cd 进入任何嵌套文件夹。

【讨论】:

  • 你好。感谢您的帮助,但现在我收到错误“2021-07-05T09:58:54.585582+00:00 heroku[router]: at=info method=GET path="/" host=projectslist2.herokuapp.com request_id=ee27cab3 -d6d0-4296-84ca-0863d3e8d820 fwd="88.1.81.122" dyno=web.1 connect=0ms service=2ms status=404 bytes=397 protocol=https" 我的新应用地址 - projectslist2.herokuapp.com 我的新仓库 - @987654323 @
【解决方案2】:

Procfile 添加到您的根文件夹中,内容如下:

web: node server/index.js -port 8000

在您的package.jsonscripts 部分添加一个小补充,告诉Heroku 一旦它为您的项目获取了所有依赖项,它应该构建它,although that may not be necessary now

"scripts": {
  "start": "react-scripts start",
  "build": "react-scripts build",
  "test": "react-scripts test",
  "eject": "react-scripts eject",
  "heroku-postbuild": "npm run build"
},

【讨论】:

  • 谢谢,但我收到与上一个答案相同的错误 - 2021-07-05T10:17:19.481777+00:00 heroku[router]: at=info method=GET path="/" host=projectslist.herokuapp.com request_id=85616105-a296-4281-8cef-095e9f948ed2 fwd="88.1.81.122" dyno=web.1 connect=1ms service=16ms status=404 bytes=397 protocol=https 我能做什么修好吗?
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 2020-05-03
  • 2018-05-16
  • 2021-12-18
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
相关资源
最近更新 更多