web-dev-qa-db-ja.com

GraphQL gql構文エラー:予期される名前、見つかりました}

新しい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とは何ですか?ここで私が間違っていることを誰もが知っていますか?

9
Nathan

私は私の問題の根本が何であるかを100%確信していませんが、すべてのクエリコードを別のes6モジュールに移動すると問題が解決しました。周囲のコードから何らかの汚染があったに違いありません。参考のために、私のクエリはReactコンポーネントに埋め込まれました。

これは動作します:

import gql from 'graphql-tag'

const query = gql`
{
  user(id: 5) {
    firstName
    lastName
  }
}
`

export default query
3
Nathan

このエラーは、閉じられていない中括弧がある場合、またはクエリの呼び出し中に一部のフィールドが適切に定義されていない場合にほとんど発生します。

16

私は自分の問題を解決しないという受け入れられた答えを見つけました。私が働いたのは、最初の中括弧を削除した場合です。代わりに、クエリは次のようになります。

const query=gql`
  user(id: 5) {
    firstName
    lastName
  }
`
4
Joseph Lin

このエラーの別の原因:下位に定義されている型を参照しています。参照しているタイプを上に移動します。

例えば:

    type Launch {
        rocket: Rocket
    }

    type Rocket {
        name: String
    }

Launchが定義される前にRocketRocketを参照するため、エラーがスローされます。

修正されたコード:

    type Rocket {
        name: String
    }

    type Launch {
        rocket: Rocket
    }
2
ginna