【Laravel8】サブディレクトリに設置したアプリでlivewire.jsがnet::ERR_ABORTED 404 Not Found
Laravel8からログイン機能まわりにJetstreamが導入され、7以前のLaravelと比べてだいぶ中身も変わっていました。そんな中、開発環境では問題なかったのに本番環境へデプロイした時にlivewire.jsがnet::ERR_ABORTED 404と言われました。
原因
livewire.jsは、Jetstreamで使われているlivewireが書き出しているjsファイルです。コンパイルして書き出す際にパスを生成しているのですが、サブディレクトリの場合を考慮されてないようです。
対策
livewireのコンパイル設定を探しましたが、vendor内にあるため以下のコマンドで外に出します。
NACK様よりconfig/livewire.phpのみ外へ出す方法を教えていただきました。ページ下部のコメント欄をご参照ください。
php artisan livewire:publish
するとlivewire関連のファイルがいろいろ外に出てきますが、使いたいのはconfig/livewire.phpです。この中の以下の場所を編集します。
'asset_url' => null, // という箇所を 'asset_url' => env('ASSET_URL', null), // と変更します。
開発環境も本番環境も同じサブディレクトリなら直接ここにパスを書いても良いのですが、本番環境でのみサブディレクトリにしたいので、上記のようにenvファイルのASSET_URLを参照するように書きます。
次に本番環境のenvファイルに以下のようにASSET_URLをセットします。envファイル内のどこに入れてもいいです。
ASSET_URL="/subdir"
以上で404エラーが消えるはずです。反映されない場合は、以下のコマンドでconfigのキャッシュをクリアしてみてください。
php artisan config:cache #または php artisan config:clear
関連記事
【Laravel】サブディレクトリに設置したアプリでapp.js、app.cssがnet::ERR_ABORTED 404 Not Found
-
前の記事
【Laravel】サブディレクトリに設置したアプリでapp.js、app.cssがnet::ERR_ABORTED 404 Not Found 2021.03.29
-
次の記事
【Laravel】リレーション先のイベント(deleting)が発火しない 2021.04.28
同じ現象で困っていたので大変助かりました、ありがとうございます!
お礼と言っては何ですが、手順の改善提案を書いておきます。
php artisan livewire:publish
を実行すると、本文で書かれていらっしゃるとおり
> livewire関連のファイルがいろいろ外に出てきます
ので、代わりに
1. [プロジェクトDIR]で php artisan vendor:publis を実行
2. 選択肢の中から「Tag: livewire:config」と書かれている行を探し、その行の頭に書かれている番号を入力してエンター
とすると、config/livewire.phpだけが作成されます(パスは、[プロジェクトDIR]/app/config/livewire.php )。
それ以降の手順は、書かれている内容をそのまま真似させていただきました。
コメントありがとうございます!
お役に立ててよかったです。またご助言感謝しますm(_ _)m
livewire.phpだけ取り出す方法があるんですね。Laravel奥が深い。。。今後はその方法を使わせていただきます。ありがとうございました(^^)
先日コメントさせていただいたものです。
返信ありがとうございましたmm
そして大変申し訳ありません、先日のコメント、コマンドにtypoがありました。
お詫びして訂正させていただきます。
> 1. [プロジェクトDIR]で php artisan vendor:publis を実行
×:php artisan vendor:publis
○:php artisan vendor:publish
わざわざ訂正ありがとうございます♪
気づきませんでした;助かりますm(_ _)m