新しいReactプロジェクトでApollo GraphQLサポートを設定しようとしていますが、gql
を使用してクエリをコンパイルしようとすると、エラーが発生し続けます。
Syntax Error: Expected Name, found }
これは、次のコードによって生成されます。
import gql from 'graphql-tag'
const query = gql`
{
user(id: 5) {
firstName
lastName
}
}
`
console.log(query)
ここにあるサンプルコードからこのコードを作成しています: https://github.com/apollographql/graphql-tag
エラーメッセージで参照されているName
とは何ですか?ここで私が間違っていることを誰もが知っていますか?
私は私の問題の根本が何であるかを100%確信していませんが、すべてのクエリコードを別のes6モジュールに移動すると問題が解決しました。周囲のコードから何らかの汚染があったに違いありません。参考のために、私のクエリはReactコンポーネントに埋め込まれました。
これは動作します:
import gql from 'graphql-tag'
const query = gql`
{
user(id: 5) {
firstName
lastName
}
}
`
export default query
このエラーは、閉じられていない中括弧がある場合、またはクエリの呼び出し中に一部のフィールドが適切に定義されていない場合にほとんど発生します。
私は自分の問題を解決しないという受け入れられた答えを見つけました。私が働いたのは、最初の中括弧を削除した場合です。代わりに、クエリは次のようになります。
const query=gql`
user(id: 5) {
firstName
lastName
}
`
このエラーの別の原因:下位に定義されている型を参照しています。参照しているタイプを上に移動します。
例えば:
type Launch {
rocket: Rocket
}
type Rocket {
name: String
}
Launch
が定義される前にRocket
がRocket
を参照するため、エラーがスローされます。
修正されたコード:
type Rocket {
name: String
}
type Launch {
rocket: Rocket
}