Create-React-Appを使用してReactJSアプリケーションを開発しています。これは、APIも提供するNode/Expressサーバーから提供されます。 node/JSビルドパックを使用してサーバー全体をHerokuにデプロイし、@ marsが提案するようにノードnpm run build
ファイルからpostinstall
スクリプトでCRAビルドステップpackage.json
を取得しようとします この号では 。
問題は、Herokuのデプロイがこのエラーで失敗することです。このエラーはローカルで発生することがありますが、web_appのnpm install
が問題を解決していますが、Herokuで実行した場合は解決しないことに注意してください。関連する質問が2つあります。
npm install
を複数回実行する必要があるのですか。@ johnnycon-
これはまさに問題であり、私は 火星 から回答を受け取りました github問題の投稿 :
@ philjoseph、react-scriptsは(デフォルトで)CRAアプリのdevDependencyですが、Heroku Node buildpackには環境NODE_ENV = productionがあり、npmインストールでdevDepsがスキップされます。
これらのdevDepsもインストールするには:
npm install --only = dev && npm install && npm run build
彼はまた、この優れたリポジトリを指摘しました: https://github.com/mars/heroku-cra-node
私はこれに従いました、そしてそれは魅力のように働きます:)
開発と本番の両方で「react-scripts」が必要なので、「react-scripts」:「1.0.16」を「devDependencies」から "dependencies"なので、herokuはそれを無視しません。
React-scriptsはpackage.jsonでdevDependencyまたは通常の依存関係として宣言されていますか? Herokuをベースに構築していて、herokuがenv変数を本番環境として読み取っているため(ここでは想定しています)、react-scriptsはインストールされません。通常の依存関係としてreact-scriptsを移動して、再試行してください。
他のクラウドプロバイダーでは、このパスをたどらない可能性がありますが、Herokuでは、これが私が見つけた最も抵抗の少ないパスです。この記事では、シナリオについてもう少し詳しく説明します。 https://originmaster.com/running-create-react-app-and-express-crae-on-heroku-c39a39fe7851
Package.jsonファイルのスクリプトがどのように見えるかを共有できますか?昨日実際にHerokuにデプロイしましたが、問題なく動作しているようです。
依存関係がpackage.jsonに正しく追加されていない可能性があります。
これが私のスクリプトの外観です(scss/less/sassがない場合は、最初の2つのスクリプトを無視してください):
"scripts": {
"build-css": "node-sass src/ -o src/",
"watch-css": "npm run build-css && node-sass src/ -o src/ --watch --recursive",
"start": "npm run start:server",
"watch": "npm-run-all --parallel watch-css start:*",
"start:server": "node server/server.js",
"start:client": "react-scripts start",
"build": "npm run build-css && react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"postinstall": "npm run build"}
Hotrealodingを利用するために開発で実行しているとき、私は実行します
npm run watch
そしてPRODの場合は実行します
npm run build
そして、Herokuにデプロイします。別のターミナルウィンドウでHerokuのログを確認して、展開の問題点を確認してください。
heroku logs
を使用するだけで、ログの最後の100行が表示されます。
または、ログをリアルタイムで追跡するには:heroku logs -t
。
私はまったく同じことを試みていましたcreate-react-appプロジェクトをherokuにデプロイし、react-scripts not found something...
を取得していました。
Herokuはscriptsをpackage.json
に読み込み、実行できません。
この問題を克服するための鍵は、「scripts」フォルダを「作成/公開」することです。これはデフォルトでですcreate-react-app
は、物事を単純にするために、それを作成しません。
したがって、eject
コマンド$npm run eject
を実行すると、scripts
フォルダーがconfig
フォルダーと同じ長さで作成されます。
その後、herokuスクリプトを再度実行できます。 $ git Push heroku master
そしてうまくいけばHerokuにすべてをデプロイします。
create-react-appドキュメント のeject
スクリプトに関する詳細情報
これがお役に立てば幸いです。
Specify Node Environment使用するherokuのバージョンをherokuに指示します。デフォルトでは、herokuはアプリをクラッシュさせる古いバージョンを使用します。2つのpackage.jsonファイルがあります。 1つはクライアントにあり、もう1つはエクスプレスサーバー側にあります。エクスプレスサーバー側では、これをpackage.jsonに追加します。
"engines": {
"node": "12.9.1",
"npm": "6.10.2" },
開始スクリプトを指定
Instruct heroku what command it should run to start up our server. Add this to the server side package.json
"start": "node index.js"、
INSTALL HEROKU CLI
HerokuCliをインストールする
Sudo apt-get update
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh or Sudo snap install heroku
Macosでは
brew install heroku cli
デフォルトでは、herokuはgitベースのデプロイメント手順またはワークフローを使用します。
Git init
Git add .
Git commit -m “initial commit”
Heroku login
Heroku create nameOfTheApp
https://git.heroku.com/nameOfTheApp.git
このリンクが展開ターゲットです。これは、ローカルサーバーをプッシュできるgitリポジトリです。
Git remote add heroku https://git.heroku.com/nameOfTheApp.git
Git Push heroku master