LoginSignup
2
0

More than 5 years have passed since last update.

herokuにLaravel+vueのアプリケーションをデプロイしたらLaravel mixが存在しないエラー

Last updated at Posted at 2019-01-24

色々試してたら直ったので備忘録

具体的なエラー

ErrorException (E_ERROR)
The Mix manifest does not exist. (View: /home/vagrant/●●●●/resources/views/app.blade.php)

ローカルだとMix manifestはnpm run devとかでビルドすると作成されるんだがherokuでそれをどうやってやるかわからんかった

試した事

とりあえずビルド関連の設定を疑う

package.json

productionモードでビルドすると
dependencies
の中のものしかインストールされないらしい
そしてlaravel-mixがdevDependenciesの中に記述されていたので
devDependenciesに入ってるモジュールで動作に必要なものの記述を全部
dependenciesの中に移した

そもそも意図した通りにビルドが終わってるか確認

直らなかったので、そもそもビルドが正常に終わってるのか?と思い(エラーは出ていないが)scriptsに下記を追記
(調べている時に理解したけどlaravel-mixを作成するために必要なコマンドは
ここの中に記述すればいいらしい)

"postinstall": "echo postinstallおわったんご",
"heroku-prebuild": "echo heroku-prebuildおわったんご",
"heroku-postbuild": "echo heroku-postbuildおわったんご."

再ビルドすると表示されるはずのメッセージが表示されないではないか

もしやと思いherokuのサイトにあるRun consoleコンソールからnpm -vを実行した
バ ー ジ ョ ン 番 号 が 出 て こ な い
ということは・・・

herokuの設定

そもそもnode.jsがBuildpackに含まれていなかった
てっきりデフォルトで入っていると思っていたので盲点だった
Add buildpackから追加
スクリーンショット 2019-01-24 14.55.36.png
念のためRestart all dynosから再起動
スクリーンショット 2019-01-24 14.59.48.png

明らかにビルド時のログが長くなった!
仕込んだビルド時のメッセージも表示されるようになったので
heroku上でproductionモードのビルドを実行するために
こんな感じに修正

    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "postinstall": "echo postinstall finished!!",
    "heroku-prebuild": "npm run production",
    "heroku-postbuild": "echo heroku-postbuild finished!!"

無事動くようになった、めでたしめでたし
そもそもherokuの使い方わかってなかった感ある

余談

今回自分は遭遇しなかったが
sh: 1: cross-env: not found
こういったエラーが出る場合はこんな感じでフルパスで記載すればいいらしい

"dev": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development webpack-dev-server --inline --hot --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
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0