はじめに
あけましておめでとうございます。新年はいかがお過ごしですか。年末年始は、Netflixのナルコスをずっと見てました。自分は個人プロダクトで使用しているLaravelのミドルウェアをバージョンアップしていました。さっさと終わらせてシーズン3に戻りたかったのですが、 barryvdh/laravel-cors
を v1.0.3にアップグレードしようとしたところ、地味にハマってしまい、ナルコスに戻れなくなってしまいました。
困ったこと
barryvdh/laravel-cors
を v.1.0.0以上にアップグレードしようとしたところ以下のエラーが突然表示された。
Illuminate\Contracts\Container\BindingResolutionException: Target class [Barryvdh\Cors\HandleCors] does not exist.
注意点
1.リポジトリが移動した
2019年12月28日にリポジトリの場所が、 barryvdh/laravel-cors
から fruitcake/laravel-cors
に移動しました。偶然このツイートを見て知ったけど、GitHubのリリースノートやREADMEにも書いておいてほしかったですね...。
Moved barryvdh/laravel-cors to fruitcake/laravel-cors and tagged V1, simplifying the middleware a bit. It now uses a global middleware + path filter, instead of group middleware, to better handle errors. Please give it a try and report issues :) https://t.co/A0ixn3NwOa
— Barry vd. Heuvel (@barryvdh) 2019年12月27日
2.v1.0.0から Breaking changesの変更が入った
これは v1.0.0のRelease Note に詳細が書いてあります。この後解決方法でも具体的に紹介していきます。
環境
- Laravel 6.9.0
- barryvdh/laravel-cors 0.11.4
ゴール
barryvdh/laravel-cors
0.11.4 から fruitcake/laravel-cors
1.0.3 にアップグレードします
解決方法
まずは composer.json
でパッケージ名を変更して、 composer upgrade barryvdh/laravel-cors
。
- "barryvdh/laravel-cors": "^0.11.1",
+ "fruitcake/laravel-cors": "^1.0.3",
次に config/cors.php
のオプション名を lowerCamelCase形式からsnake_case形式に変更します。
- 'supportsCredentials' => true,
- 'allowedOrigins' => ['*'],
- 'allowedOriginsPatterns' => [],
- 'allowedHeaders' => ['*'],
- 'allowedMethods' => ['*'],
- 'exposedHeaders' => [],
- 'maxAge' => 0,
+ 'supports_credentials' => true,
+ 'allowed_origins' => ['*'],
+ 'allowed_origins_patterns' => [],
+ 'allowed_headers' => ['*'],
+ 'allowed_methods' => ['*'],
+ 'exposed_headers' => [],
+ 'max_age' => 0,
config/cors.php
に v1.0.0
から追加になった paths
オプションを追加する。 paths
でCORSを許可するルーティングが指定できるので、適宜調整してください。
+ 'paths' => [*],
app/Http/Kernel.php
の $middleware
で読み込むクラスを差し替えます。
- \Barryvdh\Cors\HandleCors::class,
+ \Fruitcake\Cors\HandleCors::class,
これで以上です。
まとめ
リポジトリが移動されたことが分かっていれば大した内容ではないです。ですが、自分は最初そのことに気づかず、地味に少しハマってしまったので、同じようにハマる人が少しでも減ればと思い、本記事をまとめました。お役に立てれば幸いです。