'locations' 在 GraphQL 错误中指的是什么?

What does 'locations' refer to in GraphQL errors?

我正在学习 GraphQL Node/Prisma 服务器教程,但由于我的代码有问题而遇到错误。我已经解决了错误,但我想了解错误消息,特别是 locations 指的是什么?也就是说,我有第 2 行第 3 列的 location,但是第 2 行第 3 列是什么?我的代码中的相关方法(signup,在本例中)?我的突变?

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

就像 path 一样,locations 指的是 GraphQL 文档中发生错误的位置。您可以使用 SWAPI GraphQL endpoint 之类的东西亲眼看到这一点。我们可以通过请求不存在的字段来触发验证错误:

{
  allFilmz
}

产生的错误有这个 locations 数组:

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

那是因为违规字段在第 2 行,从第 3 列开始。如果我们改为发送:

{allFilmz}

我们得到:

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

通常,错误的 path 会比 locations 提供更多信息,但是当您的文档中存在语法错误时,path 将不存在 -- 在在这些情况下,locations 是您唯一可以用来追踪语法错误发生位置的东西。

使用 GraphQL Playground 的注意事项 -- 与 GraphiQL 不同,Playground 会在发送请求之前去除注释并格式化您的请求,因此 locations 可能与您在 Playground 中看到的内容不匹配 UI.