#今回の敵
sh: 1: cross-env: not found
に苦しめられて結構調べても解決策がでてこなかった
スライムかと思ったらハーゴンでした
##経緯
おとといまで元気に動いてたHerokuちゃんが今日から突然デプロイ時のビルドに失敗するようになった
何もしてないのに壊れた(マジで)
直すのに結構時間がかかったので、同じような事があった時に備えて調査のやり方と動くようにする方法を記載しておく
##結論
package.jsonにこいつを追加すれば動く
"engines": {
"node": "10.15.0"
}
version 10.15.1がリリースされたのが1/29の朝方なので、もしかしたらそれ関連で何かあるのかもしれない。
(1/30 19:30時点では情報見つけられず)
##調査方法
後に記載するがGoogle先生が教えてくれる方法では同じエラーが発生し続けた
なので調査のために試した事
ビルドが成功していた最新までコミットを戻し、空コミットしてプッシュ
→ビルド失敗(コードの問題の可能性低)
ローカルでnpm run production
実行
→問題なくビルドされる(ビルドのscriptsの問題の可能性低)
ファイルの権限設定をHeroku上と同じにしてローカルでnpm run production
実行
→問題なくビルドされる(権限の問題の可能性低)
heroku run npm run production
実行
→問題なくビルドされる(この結果はかなり混乱したが、どうやらビルド処理の前後に問題がありそう)
以上の結果から、こちら側で変更したものには問題がなさそうなので
Herokuのactivityタブから見る事ができるビルドログを正常終了時と異常終了時でdiffをとる
正常終了時
Resolving node version 10.x...
Downloading and installing node 10.15.0...
Using default npm version: 6.4.1
-----> Restoring cache
- node_modules
異常終了時
Resolving node version 10.x...
Downloading and installing node 10.15.1...
Using default npm version: 6.4.1
-----> Restoring cache
Cached directories were not restored due to a change in version of node, npm, yarn or stack
Module installation may take longer for this build
どうやらnodeのバージョンが違う事が問題を引き起こしているみたいだ
nodeのリリースノートを見ると、1/29の7時に10.15.1がリリースされている
という事で、以前のバージョンに戻せば動くのではとあたりをつけて調べ、ビルド時のnodeのバージョンを指定する方法が結論に書いてある方法となる
##備考
ローカルのnodeのバージョンを10.15.1に上げてもビルドに成功したのでHerokuのheroku-buildpack-nodejs
の問題のような気もする
##余談
一応Google先生が教えてくれる対処法も記載しておく
###その1
package.jsonに書くこれを
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
こうする
"production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
###その2
node_modulesをrm -rfで消してからnpm install
###その3
npm install --save-dev cross-env
してから
npm install