我正在尝试将错误记录到哨兵,但我所能访问的只是
formatError
选项,该选项不包括本机错误,以便哨兵可以显示堆栈跟踪等..
传递给
formatError
的错误是一个GraphQLError
,它包裹实际的执行错误。该错误有许多有用的属性(请参阅来源here),包括一个 originalError
属性,它公开了原始错误。但请注意,这只会填充执行错误,即解析器内部抛出的错误。其他错误,尤其是验证错误,不会有此字段,但仍会传递给 formatError
。
function formatError(error) {
console.log(error.originalError)
return error
}
除了使用
formatError
之外,您可能会发现这个包很有用,它与graphql-middleware一起使用,将为您完成繁重的工作。
这篇博客文章帮助我解决了这个问题。 GraphQL 的想法是,你的客户端必须处理可能的错误。这就是为什么阿波罗抓住了他们而哨兵没有机会对付他们。
文章介绍了一个自定义插件,它链接到apollo服务器的进程链中,并在发生错误时通知Sentry。代码非常简单。我可以轻松地在我的 NestJS 应用程序中实现它。