AWS Amplify を使って、GraphQL API とバックエンドを生成する実験を行っています。ガイド付きスキーマ作成を使用して、機能するバックエンドを作成できます。私は Todo の例を選びました。Android Studio でビルドされたアプリから呼び出すことができます。クエリとミューテーションは正常に機能します。Android Studio を使用して、amplify/backend/api/project/ (project はプロジェクトの名前) の schema.graphql を確認するたびに、Todo を再定義しようとして、宣言されていないディレクティブ @model を使用しようとすると、エラーが発生します。明らかな何かが欠けていると確信しています。そのため、どんな助けもいただければ幸いです。
Android Studio 3.6.3 / Gradle 5.6.4 / Gradle Plugin 3.6.3 / JS Graph QL 2.4.0 / Java 言語 / Amplify CLI 4.18.1 / npm 6.14.4 / ノード 12.16.2
このgraphqlプラグインをこのように使用しようとしているのは間違っていますか?
再現するには:
空のアクティビティを使用して、Android Studio でプロジェクトを作成します。プロジェクトのルートから実行:
amplify init
デフォルトを受け入れます。走る:
amplify add api
GraphQL、ガイド付きスキーマを選択し、Todo の例を選択します。それ以外の場合は、デフォルトを使用します。走る:
amplify push
mplify/backend/api/project の graphql.schema には todo スキーマが含まれます
type Todo @model {
...
}
... はデフォルトのフィールドです。
これによりエラーが発生します
宣言されていないディレクティブ「モデル」を使用しようとしました
また、エラーの 3 つのインスタンスが生成されます
既存の 'Todo' 型を再定義しようとしました
増幅によって同じ json スキーマが #current-cloud-backend とプロジェクトのビルド ディレクトリにドロップされていることがわかります。
デフォルトの .graphqlconfig.yml ファイルを受け入れました。
クイックアップデート:
以下を実行することでエラーを解消できることがわかりましたが、不必要なハックのようです。それが正しいフェアなら十分ですが。
.yml を編集して、スキーマの #current-cloud-backend コピーを除外し、スキーマのビルド バージョンを除外しました。
ディレクティブに関する Amplify Web ページからディレクティブ SDL を手動でグラフql ファイルに貼り付け、ymlに含めました。
これにより、@model に関するエラーが削除されました。
また、@aws_subscribe が未定義であるというエラーを扱ったこの記事のアドバイスに従いました。
しかし、生成された schema.graphql で、amplify/backend/api/project に複数の再宣言エラーが発生します。