Apollo + React 在执行突变时给了我 400 错误。可能的 httpLink 错误

Posted

技术标签:

【中文标题】Apollo + React 在执行突变时给了我 400 错误。可能的 httpLink 错误【英文标题】:Apollo + React gives me a 400 error when performing a mutation. Possible httpLink error 【发布时间】:2021-04-12 06:09:11 【问题描述】:

出于一个奇怪的原因,我每次执行突变时都会收到400 代码。

这是我的 httpLink 代码

// ApolloProvider.js
const httpLink = createHttpLink(
    uri: 'http://localhost:3000/graphql',
);

const client = new ApolloClient(
    link: httpLink,
    cache: new InMemoryCache(),
);

然后我将其应用到下面的同一文件中

// ApolloProvider.js
export default function ApllProvider(props) 
    return <ApolloProvider client=client>props.children</ApolloProvider>;

谈到 GraphQL,我完全是新手,所以我很感激帮助。在服务器上一切正常,我正在提交我知道在服务器上工作的相同值。

我的一个突变看起来像这样

//Login.js
const LOGIN = gql`
    mutation login($email: String!, $password: String!) 
        login(email: $email, password: $password) 
            id
            token
            firstName
            profileLink
        
    
`;

以上,要将我的值提交到我的服务器,我正在做

//Login.js
const formik = useFormik(
        initialValues: 
            email: '',
            password: '',
        ,
        validationSchema,
        onSubmit: (values) => 
            formik.isSubmitting = true;
            loginUser(
                variables:  email: values.email, password: values.password ,
            );
            formik.isSubmitting = false;
        ,
    );

    const [loginUser,  loading, error ] = useMutation(LOGIN, 
        onError(err) 
            console.log(err);
        ,
    );

【问题讨论】:

你有没有查看开发者工具中的网络错误日志? 是的。它表明这是阿波罗本身的错误Error: Network error: Response not successful: Received status code 400 at new ApolloError (ApolloError.ts:46) 因为下一个错误连接到QueryManager.ts,和Observable.js(应该是Apollo的内部模块)。 【参考方案1】:

所以这个很简单。我要求一个未在我的类型上定义的属性。一旦我删除它,一切都开始工作了。

我通过转到 Chrome 中的“网络”选项卡并检查了一个名为“graphql”的请求,发现了问题所在。

【讨论】:

以上是关于Apollo + React 在执行突变时给了我 400 错误。可能的 httpLink 错误的主要内容,如果未能解决你的问题,请参考以下文章

在执行 Apollo 突变之前映射变量

React Apollo 在突变后更新客户端缓存

如何测试一个变量设置为随机的 Apollo 突变?

执行突变时 Apollo 客户端错误

Apollo/graphQL:如何将乐观 UI 用于嵌套反应组件的突变?

React Hooks 上的 Apollo 突变