Vite manifest not found at public/build/manifest.jsonを解決する方法【Laravel】
目次
Laravelで「Vite manifest not found at: .../public/build/manifest.json」が出たときの解決方法です。npm run build・npm run dev で直る理由と、vite: not found・public/hot の残り・Unable to locate file in Vite manifest の場合を Laravel 13 で確かめました。
Laravel のプロジェクトをデプロイした際に、「Vite manifest not found」というエラーが出ました。
Vite でビルドすることで解決しています。
2026年11月に、Laravel 13 で同じエラーを再現して、解決方法と、ビルドしても直らないときの原因を確かめ直しました。
エラー全文
Vite manifest not found at: /var/www/html/laravel-docker/src/public/build/manifest.json
public/build/manifest.json が見つからない、というエラーです。
/var/www/html/... の部分は、プロジェクトを置いた場所によって変わります。
解決方法(実際に解決した方法)
Vite によるビルドをすることで解決します。
開発環境
npm run dev本番環境
npm run build解説
このコマンドを打つことで、開発環境ではmanifest.jsonを参照しなくなり、本番環境ではmanifest.jsonが生成されるためこのエラーが解決します。
プロジェクトのコードを見ると、例えばresources/views/app.blade.phpなどに、
@vite(['resources/js/app.js', "resources/js/Pages/{$page['component']}.vue"])このような記述があると思います。
この部分が、npm run devかnpm run buildによって出力結果が変わります。
以上が本件の解決方法です。
以下は必要な人だけ読み進めていただければと思います。
Laravel 13 でエラーを再現して確かめた結果
2026年11月に、次の環境で確かめました。
- PHP 8.4.27(Docker の php:8.4-cli)・Laravel 13.40.0
- Node.js 22.23.4・npm 10.9.9(Docker の node:22)・Vite 8.3.6・laravel-vite-plugin 3.2.1
ビルドする前は 500 エラーになる
composer create-project で作った直後は、public/build がありません。
@vite(['resources/css/app.css', 'resources/js/app.js']) だけを書いたビューを表示すると、ステータス 500 で次のエラーになりました。
Illuminate\Foundation\ViteManifestNotFoundException
Vite manifest not found at: /work/app/public/build/manifest.jsonなお、Laravel 13 の初期の welcome.blade.php は、次のように manifest.json か hot ファイルがあるときだけ @vite を出す書き方になっていました。
@if (file_exists(public_path('build/manifest.json')) || file_exists(public_path('hot')))
@vite(['resources/css/app.css', 'resources/js/app.js'])
@endifそのため、作った直後のトップページではこのエラーは出ません。
自分で作ったレイアウトなど、条件なしで @vite を書いたページで出ます。
npm run build のあとは 200 になる
npm run build を実行すると、public/build/manifest.json と public/build/assets/ の下のファイルができました。
同じページは 200 になり、@vite の部分は次のタグになりました。
<link rel="preload" as="style" href="http://localhost:8000/build/assets/app-B3GT8ZJD.css" />
<link rel="modulepreload" as="script" href="http://localhost:8000/build/assets/app-BvRk9kiK.js" />
<link rel="stylesheet" href="http://localhost:8000/build/assets/app-B3GT8ZJD.css" />
<script type="module" src="http://localhost:8000/build/assets/app-BvRk9kiK.js"></script>ファイル名のハッシュ(B3GT8ZJD の部分)は、manifest.json を見て決まっています。
npm run dev の間は manifest.json を見ない
public/build を消して npm run dev を動かすと、public/hot というファイルができました。
中身は開発サーバーの URL だけです。
http://[::1]:5173hot があると、@vite は開発サーバーを指すタグを出し、manifest.json がなくても 200 になりました。
<script type="module" src="http://[::1]:5173/@vite/client"></script>
<link rel="stylesheet" href="http://[::1]:5173/resources/css/app.css" />
<script type="module" src="http://[::1]:5173/resources/js/app.js"></script>「開発環境では npm run dev」で直るのは、この仕組みのためです。
public/build は Git に入らない
Laravel 13 の初期の .gitignore には、次の行が入っていました。
/public/build
/public/hotGit でサーバーへコードを持っていっただけでは public/build がないので、サーバー側で npm run build を実行するか、ビルドしたファイルを別に置く必要があります。
npm run build で「sh: 1: vite: not found」と出るとき
npm install をしていない(node_modules がない)状態で npm run build を実行すると、次のように出てビルドされませんでした。
> build
> vite build
sh: 1: vite: not foundvite は package.json の devDependencies に入っているので、先に npm install が必要です。
npm install のあとに npm run build を実行すると、ビルドが通りました。
npm install
npm run buildビルドしたのに開発サーバーの URL が出るとき(public/hot が残っている)
npm run dev を Ctrl+C と同じシグナル(SIGINT)で止めると、public/hot は消えました。
一方、プロセスを強制終了(kill -9)すると、public/hot が残りました。
hot が残った状態で npm run build を実行して manifest.json を作っても、@vite は止まった開発サーバー(http://[::1]:5173)を指したままでした。
開発サーバーは止まっているので、その URL には接続できません。
public/hot を消すと、ビルドしたファイルを指すタグに戻りました。
rm public/hotビルドしたのに CSS や JS が読み込まれないときは、public/hot が残っていないかを見るとよさそうです!
「Unable to locate file in Vite manifest」と出るとき
manifest.json はあっても、vite.config.js の input に入っていないファイルを @vite に書くと、別のエラーになりました。
Illuminate\Foundation\ViteException
Unable to locate file in Vite manifest: resources/js/other.js.input にそのファイルを足して、npm run build をやり直すと 200 になりました。
laravel({
input: ['resources/css/app.css', 'resources/js/app.js', 'resources/js/other.js'],
// ...
}),Node.js が無い場合
Node.js のバージョン確認
node -vnpm のバージョン確認
npm -vNode をインストールする方法
Docker で環境構築している時
Laravel プロジェクトのコンテナの Dockerfile などで Node を入れて、再ビルドします。
FROM php:8.3-fpm
~~中略~~
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get install -y nodejsdocker compose down
docker compose up -d --build→ Docker で Laravel 11 の開発環境を構築する方法【動画あり】
本番環境
一例ですが、Amazon Linux 2023 だと NVM を使ってインストールすると楽です。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --ltsNVM のバージョン(v0.39.7)は、この記事を書いた2024年11月当時のものです。
→ Laravel プロジェクトを AWS EC2 にデプロイする方法【Amazon Linux 2023 版】
参考:公式ドキュメントの説明
Laravel 13.x の公式ドキュメント(Asset Bundling (Vite) の Running Vite)によると、Vite の動かし方は2つあるとのことです。
npm run dev は開発サーバーを動かし、ファイルの変更をすぐにブラウザへ反映するもので、ローカルでの開発向けとのことです。
npm run build はアセットをバージョン付きでまとめ、本番へデプロイできる状態にするもの、と説明されています。
また、同じページの Advanced Customization では、hot ファイルの場所や manifest のファイル名を変えられると書かれています。
設定を変えている場合は、エラー文のパスが public/build/manifest.json 以外になるようです。
出典: Asset Bundling (Vite) - Laravel 13.x
おわりに
簡単に、Node.js のインストール方法の例まで書いてみました。
各々環境が違うのでベストな方法違うと思いますが、参考になれば幸いでございます。
2026年11月の確かめ直しでは、ビルドしても直らないときの原因として、vite: not found と public/hot の残りが見つかりました。
同じところで詰まった方の参考になればうれしいです(`・ω・´)




