概要
lighthouseを使っていて出てきたエラー対処などの備忘録です。
環境
laravel 6.0.4
lighthouse 4.5
複数ファイルに分けてGraphQLを記述する
- ファイルの指定方法
* ディレクトリ構造
graphql/
|-- schema.graphql
|-- user.graphql
graphql/schema.graphql
#import user.graphql
- 複数ファイルの指定方法
* ディレクトリ構造
graphql/
|-- schema.graphql
|-- user/
|-- 1.graphql
|-- 2.graphql
graphql/schema.graphql
#import user/*.graphql
ドキュメントで確認した時はコメントかと思って見流していました。
ワイルドカードを使用できるのは便利ですが不思議な記述ですね。
使用するモデルの設定
app/lighthouse.phpのnamespacesで変更出来ます。
app/lighthouse.php
'namespaces' => [
'models' => ['App', 'App\\Models'],
'queries' => 'App\\GraphQL\\Queries',
'mutations' => 'App\\GraphQL\\Mutations',
'subscriptions' => 'App\\GraphQL\\Subscriptions',
'interfaces' => 'App\\GraphQL\\Interfaces',
'unions' => 'App\\GraphQL\\Unions',
'scalars' => 'App\\GraphQL\\Scalars',
'directives' => ['App\\GraphQL\\Directives'],
],
スキーマキャッシュについて
$ php artisan lighthouse:clear-cache
これでキャッシュクリア出来ますが、頻繁に打つことになってしまうのでローカルの開発ではLIGHTHOUSE_CACHE_ENABLE
をfalseにしてキャッシュを無効にするほうが良いです。
app/lighthouse.php
'cache' => [
'enable' => env('LIGHTHOUSE_CACHE_ENABLE', true),
'key' => env('LIGHTHOUSE_CACHE_KEY', 'lighthouse-schema'),
'ttl' => env('LIGHTHOUSE_CACHE_TTL', null),
],
.env
LIGHTHOUSE_CACHE_ENABLE=false
graphql-playgroundがブラウザ上で立ち上がらなくなった時
localStorageの容量を食いつぶすクエリを実行すると、その後ブラウザ上で立ち上がらなくなることがあるようです。
デベロッパーツール等からlocalStorageをクリアすると解決しますが、クエリを実行したまま終了していてクリアしても立ち上げる度に実行されてしまう場合は以下の方法が参考になるようです。
参考: https://gfx.hatenablog.com/entry/2017/09/27/002334
特定のブラウザで「Server cannot be reached」が表示され続ける
そのままでも動作に問題は無いようですが、こちらもlocalStorageのクリアで解決します。