【Laravel6】”Unable to prepare route [/] for serialization. Uses Closure”への対処方法
以下のコマンドでルーティングのキャッシュを作ろうとしたら、エラーが出た。
php artisan route:cache
↓エラー内容
$ php artisan route:cache
Route cache cleared!
LogicException
Unable to prepare route [/] for serialization. Uses Closure.
at vendor/laravel/framework/src/Illuminate/Routing/Route.php:1150
1146| */
1147| public function prepareForSerialization()
1148| {
1149| if ($this->action['uses'] instanceof Closure) {
> 1150| throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
1151| }
1152|
1153| $this->compileRoute();
1154|
+14 vendor frames
15 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
下のエラー内容を見る感じ、ルートのURL([/])でクロージャ―を使っているのが原因なよう。
Unable to prepare route [/] for serialization. Uses Closure.
原因
ルートURLのルーティングを見ると以下のようになっている。
routes\web.php
Route::get('/', function () {
return view('welcome');
});
この部分はLaravelをインストールしたデフォルトの状態のまま。
原因としてはクロージャ―を使ってビューを直接返すのが良くないらしい。
※ビューではなければクロージャ―使ってもパターンもある。
解決方法
直接ビューを返す場合は以下のように書くのが正しい。
※参照:https://readouble.com/laravel/6.x/ja/routing.html#view-routes
Route::view('/', 'welcome');
これでクロージャを使ってビューを返したのと同じ動作になる。
“php artisan route:cache"を打ち直すとエラーなく完了した。
ディスカッション
コメント一覧
まだ、コメントがありません