J'essaie de configurer la prise en charge d'Apollo GraphQL dans un nouveau projet React, mais lorsque j'essaie de compiler une requête à l'aide de gql
je reçois toujours l'erreur:
Syntax Error: Expected Name, found }
Ceci est généré par le code suivant:
import gql from 'graphql-tag'
const query = gql`
{
user(id: 5) {
firstName
lastName
}
}
`
console.log(query)
Je fonde ce code sur l'exemple de code trouvé ici: https://github.com/apollographql/graphql-tag
À quoi le Name
fait-il référence dans le message d'erreur? Est-ce que quelqu'un sait ce que je fais mal ici?
Je ne suis pas sûr à 100% de l'origine de mon problème, mais le déplacement de tout le code de requête dans un module es6 distinct a résolu le problème. Il doit y avoir eu une sorte de contamination par le code environnant. Pour référence, ma requête a été intégrée dans un composant React.
Cela marche:
import gql from 'graphql-tag'
const query = gql`
{
user(id: 5) {
firstName
lastName
}
}
`
export default query
Cette erreur se produit principalement lorsqu'il existe des accolades non fermées ou lorsque certains champs ne sont pas correctement définis lors de l'appel de la requête.
J'ai trouvé la réponse acceptée pour ne pas résoudre mon problème. Ce que j'ai trouvé qui a fonctionné, c'est si vous supprimez les crochets initiaux. La requête devrait plutôt ressembler à ceci:
const query=gql`
user(id: 5) {
firstName
lastName
}
`
Une autre cause de cette erreur: vous faites référence à un type défini plus bas. Déplacez le type auquel vous faites référence.
Par exemple:
type Launch {
rocket: Rocket
}
type Rocket {
name: String
}
générera une erreur, car Launch
référence Rocket
avant que Rocket
ne soit défini.
Le code corrigé:
type Rocket {
name: String
}
type Launch {
rocket: Rocket
}