我是graphql的新手,并使用[https://github.com/graphql/graphql-js] graphql-js
来设置服务器graphql api。
我遵循了他们的文档,一切正常,期望有1个问题:
graphql-js
尝试捕获错误并使用errors: [...]
属性返回结果,但是在终端控制台中什么也没说。我想强制grahql-js
返回实际的Error对象,以便在寻找堆栈时可以调试问题。这是api中的代码
query: (ctx) -> (
await graphql(
schema
query
context
graphContext
variables
)
)
我搜索了很多主题,但是没有人说过将其设置为调试模式,也没有任何参数允许设置调试。有人知道吗?
谢谢!
答案 0 :(得分:0)
通常,您会使用express-graphql
或apollo-server
(或apollo-server-express
,apollo-server-hapi
等之类的库来为GraphQL API提供端点。除非您的用例禁止您这样做,否则我强烈建议您使用这些库之一,因为它们提供了许多对开发和生产都有用的附加功能。
使用这些库之一时,只需在配置中提供自定义formatError
函数,即可将日志记录添加到端点。请参阅每个图书馆的文档here和here。另外,如果您使用Apollo,则无论如何,完整堆栈跟踪都将在errors
数组内公开,但仅限于开发中。
如果您直接在代码中的某个地方调用graphql
函数,则可以自己记录错误。对graphql
的调用返回一个Promise,该Promise解析为一个ExecutionResult对象,该对象同时包含您的数据和错误。因此,您可以执行以下操作:
const result = await graphql(/* your args */)
if (result.errors) {
result.errors.forEach((error) => {
// log the error
})
}
答案 1 :(得分:0)
您必须在启用了debug选项的情况下实例化图形对象,像这样
var graph = graphql("/api", { debug: true })