我想显示一些从graphql服务器到用户的错误。
具有一些使用某些变异的回调组件
onSave() => {
this.props.mutate({
mutation: CHANGE_ORDER_MUTATION,
variables: {
ids,
},
}).catch((e) => {
console.log(e.graphQLErrors) <--- e.graphQLErrors is always empty array = []
})
}
虽然我可以通过graphQLErrors
链接看到apollo-link-error
错误。
const errorLink = onError(({ graphQLErrors, networkError }) => {
console.log(graphQLErrors) <--- errors from server
});
答案 0 :(得分:0)
据我了解,如果您的服务器返回错误代码,则'catch'将捕获错误,但是如果响应中返回了您的错误,但带有成功代码,则不会捕获错误。在这种情况下,您只需要从响应中排除错误即可(也可以保持捕获以防服务器以错误代码响应):
this.props.mutate({
mutation: CHANGE_ORDER_MUTATION,
variables: {
ids,
},
})
.then((response) => {
if (response.errors) {
// do something with the errors
} else {
// there wasn't an error
}
})
.catch((e) => {
console.log(e.graphQLErrors) <--- e.graphQLErrors is always empty array = []
})
或者-如果您使用react-apollo中的graphql()
选项,则可以指定onError处理程序:
export default graphql(CHANGE_ORDER_MUTATION, {
options: (props) => ({
onCompleted: props.onCompleted,
onError: props.onError
}),
})(MyComponent);
参考:
答案 1 :(得分:0)
迁移到apollo-server
而不是express-graphql
解决了这个问题。
或者您可以通过e.networkError.result.errors