Что означают «местоположения» в ошибках GraphQL? - PullRequest
1 голос
/ 06 марта 2019

Я работаю над учебным курсом по серверу GraphQL Node / Prisma и обнаружил ошибку из-за того, что в моем коде что-то не так. Я решил ошибку, но хочу понять сообщение об ошибке, в частности, что означает locations? То есть у меня есть location строки 2, столбца 3, но строки 2, столбца 3 чего? Соответствующий метод в моем коде (signup, в данном случае)? Моей мутации?

// error message 
{
  "data": {
    "signup": null
  },
  "errors": [
    {
      "message": "secretOrPrivateKey must have a value",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "signup"
      ]
    }
  ]
}

1 Ответ

1 голос
/ 06 марта 2019

Точно так же, как path, locations указывает, где внутри вашего документа GraphQL произошла ошибка. Вы можете убедиться в этом сами, используя что-то вроде конечной точки SWAPI GraphQL . Мы можем вызвать ошибку проверки, запросив поле, которое не существует:

{
  allFilmz
}

Полученная ошибка имеет этот массив locations:

[
  {
    "line": 2,
    "column": 3
  }
]

Это потому, что поле-нарушитель находится в строке 2, начиная со столбца 3. Если мы вместо этого отправим:

{allFilmz}

получаем:

[
  {
    "line": 1,
    "column": 2
  }
]

Как правило, path ошибки будет более информативным, чем locations, но path не будет существовать, когда в вашем документе есть синтаксические ошибки - в этих случаях locations единственное, что вы можете использовать, чтобы отследить, где произошла ваша синтаксическая ошибка.

Предупреждение, если вы используете GraphQL Playground - в отличие от GraphiQL, Playground вычеркивает комментарии и форматирует ваш запрос перед отправкой, поэтому locations может не соответствовать тому, что вы видите в интерфейсе Playground.

...