对Heroku的Create-React-App部署失败了`react-scripts:not found`

Phi*_*hen 6 heroku express create-react-app

我们正在使用Create-React-App开发一个ReactJS应用程序,该应用程序由我们的Node/Express服务器提供服务,该服务器也提供API.我们使用node/JS buildpack将整个服务器部署到Heroku,并尝试按照@mars 在本期中的建议从节点文件npm run build中获取postinstall脚本中的CRA构建步骤.package.json

问题是Heroku部署失败并出现此错误.请注意,这个错误发生在我本地的某个npm install时间,但是web_app中的一个正在解决问题,但在Heroku中运行时却没有.我有两个相关的问题:

  1. 如何向Heroku部署一个同时提供API和Create-React-App应用程序的Node/Express应用程序?我可以提交我的构建目录,但这确实不是正确的方法.
  2. 为什么react-scripts正在消失,我必须运行多次npm install.

Phi*_*hen 20

@johnnycon -

这正是问题,我在这篇github问题帖子中收到了Mars的答案:

@philjoseph,react-scripts(默认情况下)是CRA应用程序的devDependency,但是Heroku Node buildpack有环境NODE_ENV = production,导致npm install跳过devDeps.

要安装这些devDeps:

npm install --only = dev && npm install && npm run build

他还指出了这个优秀的回购:https://github.com/mars/heroku-cra-node

我跟着它,它就像一个魅力:)


Ale*_*nko 8

由于在开发和生产中都需要“反应脚本”,因此您可以简单地将“反应脚本”:“ 1.0.16”从“ devDependencies”移动“ dependencies”,因此heroku不会忽略它。


小智 2

React-scripts 是否在 package.json 中声明为 devDependency 或常规依赖项?由于您正在 Heroku 上进行构建,并且 heroku 正在将 env 变量读取为生产环境(我假设在这里),因此它不会安装反应脚本。尝试将反应脚本移动为常规依赖项,然后重试。

对于其他云提供商,我可能不会遵循这条路径,但对于 Heroku,这是我发现的阻力最小的路径。本文更详细地介绍了您的场景。 https://originmaster.com/running-create-react-app-and-express-crae-on-heroku-c39a39fe7851