LogicException : Unable to prepare route [api/user] for serialization. Uses Closure.がでた

意味はよくわかってないけれど、キャッシュを消そうと以下のコマンドを実行したところLogicExceptionがでた。

php artisan optimize

実行後、以下の文字が現れた。

Unable to prepare route [api/user] for serialization. Uses Closure.

気持ち悪いので、どうすればいいか調べた。

参考サイト:Error Unable to prepare route [api/user] for serialization. Uses Closure.

そもそもclosure.を使用している場合、ルートのキャッシュはクリアできないんだそう。(You can't cache routes if you are using a closure.)

使っているrouteは以下コマンドで確認できる。

php artisan route:list

■ 結果

+--------+----------+-----------+------+------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-----------+------+------------------------------------------------------------+--------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | tabletest | | App\Http\Controllers\TabletestController@showTabletestPage | web |
| | POST | tabletest | | App\Http\Controllers\TabletestController@postTabletest | web |
+--------+---

試しに、Closureを使用している箇所をコメントアウトした。

routeフォルダにいるapi.phpの以下の文とweb.phpの以下の文をコメントアウト。

//api.php
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});

//web.php
Route::get('/', function () {
return view('welcome');
});

再度問題のあったコマンドを実行。

php artisan optimize

以下のように表示されLogicExceptionの文字が消えました。

Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
Routes cached successfully!
Files cached successfully!

今のところ困ってないので、コメントアウトは戻そうと思います。
以上、備忘録でした。

laravel, php

Posted by Nakamoto