繁体   English   中英

如何在调试模式下设置 graphql-js 模块

[英]How set graphql-js module in debug mode

我是 graphql 的新手,并使用 [ https://github.com/graphql/graphql-js] graphql-js设置服务器 graphql api。

我遵循了他们的文档,一切正常,预计会出现 1 个问题:

  • 当进行查询并从深层模块得到错误时, graphql-js尝试捕获错误并返回带有errors: [...]结果errors: [...]属性,但在终端控制台中什么也不说。 我想强制grahql-js返回实际的 Error 对象,以便我可以在查看堆栈时调试问题。

这是api中的代码

query: (ctx) -> (
      await graphql(
        schema
        query
        context
        graphContext
        variables
      )
    )

我搜索了很多主题,但没有人说在调试模式下设置这个包,也没有看到任何参数允许设置调试。 有人知道这件事吗?

谢谢 !

通常,您会使用像express-graphqlapollo-server (或apollo-server-expressapollo-server-hapi等)这样的库来为您的 GraphQL API 提供端点。 除非您的用例禁止您这样做,否则我强烈建议您使用这些库之一,因为它们提供了许多对开发和生产都有帮助的附加功能。

您可以在使用这些库之一时向端点添加日志记录,只需在您的配置中提供自定义formatError函数即可。 在此处此处查看每个库的文档。 作为奖励,如果你使用 Apollo,那么完整的堆栈跟踪无论如何都会暴露在你的errors数组中,但仅限于开发中。

如果您直接在代码中的某处调用graphql函数,那么您可以自己记录错误。 graphql的调用返回一个解析为 ExecutionResult 对象的 Promise,其中包括您的数据和错误。 因此,您可以执行以下操作:

const result = await graphql(/* your args */)
if (result.errors) {
  result.errors.forEach((error) => {
    // log the error
  })
}

您必须在启用调试选项的情况下实例化图形对象,如下所示

var graph = graphql("/api", { debug: true })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM