React 应用程序在本地运行良好但在 Heroku 上部署后失败

React app working well locally but fails after deployment on Heroku

我正在 Heroku 上部署我的 React 网站。它 运行 在本地和在 运行 命令 'heroku local web' 上都很好。网站部署成功,但出现应用程序错误。

An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command
heroku logs --tail

在 运行 heroku logs -tail 上,我的日志文件看起来像这样:

2020-04-20T09:47:52.000000+00:00 app[api]: Build succeeded
2020-04-20T09:47:55.522526+00:00 app[web.1]: ℹ 「wds」: Project is running at https://{some-ip-address}
2020-04-20T09:47:55.523069+00:00 app[web.1]: ℹ 「wds」: webpack output is served from /{filename path}
2020-04-20T09:47:55.523174+00:00 app[web.1]: ℹ 「wds」: Content not from webpack is served from /app/public
2020-04-20T09:47:55.523277+00:00 app[web.1]: ℹ 「wds」: 404s will fallback to /{filename path}
2020-04-20T09:47:55.523531+00:00 app[web.1]: Starting the development server...
2020-04-20T09:47:55.523534+00:00 app[web.1]: 
2020-04-20T09:47:55.631808+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-20T09:48:17.332436+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host={hostname}.herokuapp.com request_id={some_request_id} fwd={ip address} dyno= connect= service= status=503 bytes= protocol=https

可能导致失败的可能原因是什么?我该如何解决?

您正在尝试 运行 Heroku 上的开发服务器,如下所示:

Starting the development server...

你的npm start任务是什么?你有 npm run build 脚本吗?我敢打赌你的启动脚本以监视模式启动 webpack?

相反,为您的 package.json:

尝试这样的事情
{
  //...
  "scripts": {
    "build": "webpack --mode production",
    "dev": "webpack --mode development --watch",
    "start": "node server.js"
  }
}

假设您使用的是节点服务器,您需要将 start 命令替换为您正在使用的任何服务器或使用 Heroku static buildpack.

如果 Heroku 看到 build 脚本,它会在部署您的应用程序时 运行 这个。

选项 2

如果您的服务器没有以 "npm start":

启动,请确保您设置了 Procfile
web: npm run server