[英]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-graphql
或apollo-server
(或apollo-server-express
、 apollo-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.