小编Pio*_*sik的帖子

Apollo GraphQL 客户端 + Next.JS 错误处理

该组件很好地呈现了错误状态,但异常在控制台中显示为未捕获,并且在浏览器的下一个开发中显示对话框。有没有办法处理预期错误来抑制这种行为?

import { useMutation, gql } from "@apollo/client";
import { useEffect } from "react";

const CONSUME_MAGIC_LINK = gql`
  mutation ConsumeMagicLink($token: String!) {
    consumeMagicLink(token: $token) {
      token
      member {
        id
      }
    }
  }
`;

export default function ConsumeMagicLink({ token }) {
  const [consumeMagicLink, { data, loading, error }] =
    useMutation(CONSUME_MAGIC_LINK);

  console.log("DATA", data, "loading:", loading, "error:", error);

  useEffect(() => {
    try {
      consumeMagicLink({ variables: { token } });
    } catch (e) {
      console.log(e);
    }
  }, []);

  var text = "Link has expired …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-apollo next.js apollo-client

5
推荐指数
1
解决办法
3262
查看次数

3
推荐指数
1
解决办法
1625
查看次数

2
推荐指数
1
解决办法
250
查看次数

使用ApolloClient和Apollo-Server-Express进行GraphQL错误处理

onError函数from apollo-link-error有一个填充的graphQLErrors对象,但是当ApolloClient抛出一个错误对象时,该 graphQLErrors属性包含一个空数组.进一步检查显示graphql错误消息error.networkError.result.errors.

如何正确配置Apollo Client以返回填充的graphQLErrors对象?

Apollo客户端设置:

const {ApolloClient} = require('apollo-client')
const { ApolloLink } = require('apollo-link')

const {HttpLink} = require('apollo-link-http')
const {onError} = require('apollo-link-error')
const {InMemoryCache} = require('apollo-cache-inmemory')

const errorLink = onError(({ graphQLErrors, networkError }) => {
  if (graphQLErrors) {
    graphQLErrors.map(({ message, locations, path }) =>
      console.log(
        `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`,
      ),
    )
  }

  if (networkError) console.log(`[Network error]: ${networkError}`)
})

const middleware = (req, ignored_res, next) => {
  const client …
Run Code Online (Sandbox Code Playgroud)

node.js express graphql apollo-server apollo-client

1
推荐指数
1
解决办法
2002
查看次数