Laravel启动报错:Target class [App\Http\Middleware\HandleInertiaRequests]不存在
问题:Laravel应用启动后访问localhost报错
HandleInertiaRequests 类不存在 我通过以下命令启动Laravel应用:
user@Grieg:~/DevProjects/first-app $ ./vendor/bin/sail up
但访问http://localhost时收到如下错误:
Illuminate \ Contracts \ Container \ BindingResolutionException PHP 8.2.6 10.11.0 Target class [App\Http\Middleware\HandleInertiaRequests] does not exist.
我已在\App\Http\kernel.php文件中配置该中间件:
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, HandleInertiaRequests::class, \Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class, ], ];
请求信息如下:
http://localhost/ GET curl "http://localhost/" \ -X GET \ -H 'host: localhost' \ -H 'connection: keep-alive' \ -H 'cache-control: max-age=0' \ -H 'sec-ch-ua: "Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "Windows"' \ -H 'upgrade-insecure-requests: 1' \ -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36' \ -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \ -H 'sec-fetch-site: same-origin' \ -H 'sec-fetch-mode: navigate' \ -H 'sec-fetch-user: ?1' \ -H 'sec-fetch-dest: document' \ -H 'referer: http://localhost/' \ -H 'accept-encoding: gzip, deflate, br' \ -H 'accept-language: en-CA,en-GB;q=0.9,en-US;q=0.8,en;q=0.7' \ -H 'cookie: remember_web_59ba36addc2b2f9401580f014c7f58ea4e30989d=eyJpdiI6IkVkY3BZTXc5N3BUbFhiOEdrQUxSNlE9PSIsInZhbHVlIjoiaHZIRmlsSUM2Z2p3SlBWNG1HeUNpeWthe
请问该如何解决?怎么下载或导入所需的依赖?
解决建议
安装Inertia Laravel适配器并生成中间件
- 进入Sail容器:
./vendor/bin/sail shell - 安装Inertia的Laravel依赖:
composer require inertiajs/inertia-laravel - 生成
HandleInertiaRequests中间件文件:
执行后会自动在php artisan inertia:middlewareapp/Http/Middleware目录下创建对应的文件
- 进入Sail容器:
修正Kernel.php中的命名空间引用
打开app/Http/Kernel.php,在文件顶部添加命名空间导入:use App\Http\Middleware\HandleInertiaRequests;或者直接把中间件条目改为完整类名:
\App\Http\Middleware\HandleInertiaRequests::class,清除应用缓存
执行以下命令清除配置和路由缓存:./vendor/bin/sail artisan config:clear ./vendor/bin/sail artisan route:clear重启Sail容器
先停止容器再重启,确保依赖生效:./vendor/bin/sail down ./vendor/bin/sail up -d
内容的提问来源于stack exchange,提问作者user8128167
相关产品推荐
相关产品推荐

