如何在JavaScript中调试GraphQL解析器?

3
我正在跟随howtographql.com的教程,它使用JavaScript编写内存数据和解析器创建了一个非常基础的GraphQL服务器。我遇到问题,想在解析器中加入断点,但是当我运行GraphQL Playground GUI时,在开发工具的源窗格中看不到任何内容,同时在代码中加入debugger也无法停止它。
如何调试我的解析器? 模式
type Mutation {
  updateLink(id: ID!, url: String, description: String): Link
}

解析器(我正在使用immutable.js的Map;也许不正确)

let links = [
  {
    id: "link-0",
    url: "www.howtographql.com",
    description: "Fullstack tutorial for GraphQL",
  },
]

const resolvers = {
  Mutation: {
    updateLink(root, args) {
      const linkIndex = links.findIndex(link => link.id === args.id);
      const state = links.map(link => {
        debugger;
        if (link.id === args.id) {
          const map = Map(link);
          return map
            .set("url", args.url || link.url)
            .set("description", args.description || link.description);
        }
        return link;
      });
      links = state;
      return state[linkIndex];
    },
}
2个回答

5

解析器在服务器上运行。服务器的代码不会出现在DevTools的Sources面板中。您需要使用IDE中的NodeJS调试器来调试解析器。


谢谢!我正在使用VS Code,所以只需创建一个launch.json文件就可以了!现在想想,我应该知道如何做了,但我对服务器端的node还是很新手,所以没有想到。 - redOctober13
你可以在你的Node代码中写console.log()来进行调试。 - Sukrut Bam
这里有一个工具,可以让你调试服务器端,https://graphql-debugger.com/ 你可以使用它来查看在浏览器中无法访问的内容,比如上下文、错误和解析器的时间。 - undefined

1

您可以使用VS Code的自动附加功能:

  1. 按照官方文档进行设置:https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_auto-attach
  2. 如果选择“onlyWithFlag”,则需要使用node --inspect index.js启动,文件index.js是您启动服务器的地方
  3. 在解析器中设置调试点
  4. 打开本地GraphQL浏览器并运行一些查询,您将看到调试器已附加

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接