6
votes

La requête GraphQL renvoie l'erreur "Impossible de renvoyer la valeur NULL pour un champ non Nullable"

J'ai une configuration de base de requête GraphQL comme suit:

Query.js:

{
  "data": null,
  "errors": [
    {
      "message": "Cannot return null for non-nullable field Query.dogs.",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "dogs"
      ]
    }
  ]
}

schéma. graphql:

query {
  dogs {
    name
  }
}

J'ai créé une fonction createServer () pour démarrer le serveur comme suit:

XXX

J'ai ensuite essayé d'interroger chiens comme suit:

const { GraphQLServer } = require('graphql-yoga');
const Mutation = require('./resolvers/Mutation');
const Query = require('./resolvers/Query');
const db = require('./db');

function createServer() {
    return new GraphQLServer({
        typeDefs: 'src/schema.graphql',
        resolvers: {
            Mutation,
            Query,
        },
        resolverValidationOptions: {
            requireResolversForResolveType: false,
        },
        context: req => ({ ...req, db }),
    });
}

module.exports = createServer;

Mais au lieu d'obtenir les noms du tableau de chiens, j'ai eu l'erreur suivante à la place:

type Dog {
    name: String!
}
type Query {
    dogs: [Dog]!
}

Qu'est-ce qui semble être à l'origine de cette erreur?


9 commentaires

Il semble que vous n'importez pas correctement Query.js ou que vos résolveurs ne sont pas configurés correctement. Veuillez montrer le reste du code pertinent, y compris comment vous construisez l'objet résolveurs et comment vous fournissez les définitions de type et les résolveurs au constructeur GraphQLServer.


@DanielRearden Ok, attendez.


@DanielRearden Mon prisma.graphql a plus de 300 lignes de code. Dois-je en copier une partie ou voulez-vous que je copie le tout?


Je ne sais pas si d'autres définitions de type sont pertinentes. Je pense que vous avez du code qui ressemble à ceci: github.com/prisma/prisma-examples/blob/master/typescript/… et peut-être un fichier séparé comme celui-ci github.com/prisma/prisma-examples/blob/master/typescript/...


@DanielRearden Question mise à jour !!


Bizarre, je peux exécuter un serveur graphql-yoga avec les typesDef et résolveurs ci-dessus sans aucun problème. À moins que ./resolvers/Query ne soit pas le bon chemin pour Query , je ne suis pas sûr de ce qui pourrait être faux: /


S'il s'agissait d'un chemin incorrect, le nœud ne pourrait pas le résoudre et générerait une erreur: "Erreur: module introuvable ..." et le serveur serait en panne. Il semble que cela résout, mais à un objet vide, donc le résolveur dogs n'est pas là. Êtes-vous sûr que les exportations Query.js sont correctes?


@IonutAchim Puis-je vérifier si les exportations Query.js sont correctes? J'ai ajouté un console.log ("Query:" + Query) dans la fonction createServer () et il a renvoyé Query: [Object Object] .


@AndrewL, le meilleur moyen est de vérifier les exportations du module. Le journal de la console peut être trompeur. Si vous ne deviez rien exporter, cela se résoudrait en un objet vide. Inspectez simplement le fichier et voyez quelles sont vos exportations.


3 Réponses :



0
votes


0 commentaires

0
votes

Dans mon cas, je crée un nouveau fichier Query.js dans le dossier src mais j'importe Query avec Query = require ('./ resolvers / Query') et y coder. Alors, essayez de vérifier le chemin, je pense que le problème est là.


0 commentaires