Apollo Client 3:查询在Chrome的“网络”标签中返回结果,但在我的应用中未定义

问题描述

我正在使用@apollo/client v3来获取一些数据。在Chrome的“网络”标签(http结果)中,我可以看到它返回了数据和错误(我并不担心该错误,我知道为什么会这样。):

{
    data: {workItems: [,…]},…},errors: [{message: "Error trying to resolve position."
}

但是在我的应用中,data返回的是未定义的。

这是我的客户端配置:

export const graphqlClient = new ApolloClient({
    cache: new InMemoryCache(),link: ApolloLink.from([
        onError(({ graphQLErrors,networkError }) => {
            if (graphQLErrors) {
                graphQLErrors.forEach(error =>
                    console.log(
                        `[GraphQL error]: ${JSON.stringify(error,null,2)}`
                    )
                )
            }
            if (networkError) {
                console.log(`[Network error]: ${networkError}`)
            }
        }),apolloLink
    ])
})

我的查询:

gql`
    query WorkItems($ppm: String) {
        workItems(where: { ppm: $ppm }) {
            ...WorkItemKanban
        }
    }
    ${workItemFragment.workItemKanban}
`

const useWorkItemListDataGraphql = (args: {
    query: DocumentNode
    variables: { parent: string } | { ppm: string }
}) => {
    const { variables,query } = args
    const { data,error,loading,refetch } = useQuery<
        { workItems: WorkItem[] },{ parent: string } | { ppm: string }
    >(query,{
        pollInterval: 180000,variables
    })
  
    // data returns undefined,but error shows the same error as in Chrome's network tab
    return { ...data,refetch }
}

我不确定从哪里开始找出问题所在。在没有错误的情况下,可以正常加载数据,但是我认为这不是正常现象,应始终按我在Chrome标签页中看到的方式加载数据。

解决方法

默认情况下,如果发生错误,apollo client返回undefined。 您可以在查询的选项或客户端默认选项中添加errorPolicy: 'all'

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...