ホーム>Laravel>Vite manifest not found at public/build/manifest.jsonを解決する方法【Laravel】
Laravel

Vite manifest not found at public/build/manifest.jsonを解決する方法【Laravel】

いつもご利用ありがとうございます。
この記事にはアフィリエイト広告を含む広告が掲載されており、その広告費によって運営しています。
Amazonのアソシエイトとして、ララテックは適格販売により収入を得ています。

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 で確かめました。

vite manifest not found

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]:5173

hot があると、@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/hot

Git でサーバーへコードを持っていっただけでは 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 found

vite は 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 -v

npm のバージョン確認

npm -v

Node をインストールする方法

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 nodejs
docker 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 --lts

NVM のバージョン(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 の残りが見つかりました。

同じところで詰まった方の参考になればうれしいです(`・ω・´)

フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。