The problem was this code snippet provided in the offical Laravel documentation.
app()->usePublicPath(__DIR__.'/public');
This works well. Except with Vite.
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
I followed the official instructions for migrating from webpack to Vite, it works as it should with correctly building the public/build directory with a manifest.json inside it.
// public/build/manifest.json
{
"resources/css/app.css": {
"file": "assets/app-307a2a6a.css",
"isEntry": true,
"src": "resources/css/app.css"
}
}
// vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel({
input: [
'resources/css/app.css'
],
publicDirectory: "public_html",
refresh: true,
}),
],
});
// resources/views/components/meta.blade.php
@vite('resources/css/app/css')
It's Laravel however that prepends an App/Providers string to the manifest path. I've looked through my code, the only references to App/Providers are the use App/Providers/... imports in my provider files. The stack trace doesn't seem to provide any relevant details:
Illuminate\View\ViewException:
Vite manifest not found at: /home/admin/domains/example.com/dev/app/Providers/public_html/build/manifest.json (View: /home/admin/domains/example.com/dev/resources/views/components/meta.blade.php) (View: /home/admin/domains/example.com/dev/resources/views/components/meta.blade.php) (View: /home/admin/domains/example.com/dev/resources/views/components/meta.blade.php)
at /home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Vite.php:684
at Illuminate\View\Engines\CompilerEngine->handleViewException()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:60)
at Illuminate\View\Engines\PhpEngine->evaluatePath()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:70)
at Illuminate\View\Engines\CompilerEngine->get()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/View/View.php:195)
at Illuminate\View\View->getContents()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/View/View.php:178)
at Illuminate\View\View->renderContents()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/View/View.php:147)
at Illuminate\View\View->render()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Http/Response.php:69)
at Illuminate\Http\Response->setContent()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Http/Response.php:35)
at Illuminate\Http\Response->__construct()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php:57)
at Illuminate\Routing\ResponseFactory->make()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php:87)
at Illuminate\Routing\ResponseFactory->view()
(/home/admin/domains/example.com/dev/app/Http/Controllers/ArticleController.php:30)
at App\Http\Controllers\ArticleController->index()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54)
at Illuminate\Routing\Controller->callAction()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43)
at Illuminate\Routing\ControllerDispatcher->dispatch()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Route.php:260)
at Illuminate\Routing\Route->runController()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Route.php:205)
at Illuminate\Routing\Route->run()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Router.php:798)
at Illuminate\Routing\Router->Illuminate\Routing\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:141)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php:57)
at Illuminate\Auth\Middleware\Authorize->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at App\Http\Middleware\CheckBanned->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:50)
at Illuminate\Routing\Middleware\SubstituteBindings->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:78)
at Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49)
at Illuminate\View\Middleware\ShareErrorsFromSession->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:121)
at Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:64)
at Illuminate\Session\Middleware\StartSession->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37)
at Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:67)
at Illuminate\Cookie\Middleware\EncryptCookies->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:116)
at Illuminate\Pipeline\Pipeline->then()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Router.php:799)
at Illuminate\Routing\Router->runRouteWithinStack()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Router.php:776)
at Illuminate\Routing\Router->runRoute()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Router.php:740)
at Illuminate\Routing\Router->dispatchToRoute()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Routing/Router.php:729)
at Illuminate\Routing\Router->dispatch()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:200)
at Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:141)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21)
at Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php:31)
at Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21)
at Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php:40)
at Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27)
at Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:57)
at Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php:49)
at Illuminate\Http\Middleware\HandleCors->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php:39)
at Illuminate\Http\Middleware\TrustProxies->handle()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180)
at Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:116)
at Illuminate\Pipeline\Pipeline->then()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:175)
at Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
(/home/admin/domains/example.com/dev/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:144)
at Illuminate\Foundation\Http\Kernel->handle()
(/home/admin/domains/example.com/dev/public_html/index.php:52)
I use this code for loading from public_html instead of public as recommended in the upgrade instructions for Laravel 10.
// App/Providers/AppServiceProvider
public function register(): void
{
app()->usePublicPath(__DIR__ . '/public_html');
}
Clearing the cache in a last effort doesn't help either. What are my other options?
The problem was this code snippet provided in the offical Laravel documentation.
app()->usePublicPath(__DIR__.'/public');
This works well. Except with Vite.
Please or to participate in this conversation.