繁体   English   中英

未处理的拒绝(TypeError):无法读取未定义的属性“扩展”。 (GraphQL)

[英]Unhandled Rejection (TypeError): Cannot read property 'extensions' of undefined. (GraphQL)

我正在使用 GraphQL 和 MERNG,我收到以下错误:未处理的拒绝(TypeError):无法读取未定义的属性“扩展”。 请帮帮我。 我还重新安装了 graphql。 这是发生错误的行: setErrors(err.graphQLErrors[0].extensions.exception.errors);

这是我的 Register.js 文件:

 import React, { useState } from 'react' import { Button, Form } from 'semantic-ui-react' import gql from 'graphql-tag' import { useMutation } from '@apollo/react-hooks' function Register() { const [errors, setErrors] = useState({}); const [values, setValues] = useState({ username: '', email: '', password: '', confirmPassword: '' }) const onChange = (event) => { setValues({...values, [event.target.name]: event.target.value }); } const [addUser, { Loading }] = useMutation(REGISTER_USER, { update(proxy, result) { console.log(result); }, onError(err) { console.log(err.graphQLErrors[0].extensions.exception.errors); setErrors(err.graphQLErrors[0].extensions.exception.errors); }, variables: values }) const onSubmit = (event) => { event.preventDefault(); addUser(); } return ( < div className = "form-container" > < Form onSubmit = { onSubmit } noValidate > < h1 > Register < /h1> < Form.Input label = "Username" placeholder = "Username" name = 'username' type = "text" value = { values.username } onChange = { onChange } /> < Form.Input label = "Email" placeholder = "Email" name = 'email' type = "email" value = { values.email } onChange = { onChange } /> < Form.Input label = "Password" placeholder = "Password" name = 'password' type = "password" value = { values.password } onChange = { onChange } /> < Form.Input label = "Confirm Password" placeholder = "Confirm Password" name = 'confirmPassword' type = "password" value = { values.confirmPassword } onChange = { onChange } /> < Button type = "submit" primary > Register < /Button> < /Form> { Object.keys(errors).length > 0 && ( < div className = "ui error message" > < ul className = "list" > { Object.values(errors).map(value => ( < li key = { value } > { value } < /li> )) } < /ul> < /div> ) } < /div> ) } const REGISTER_USER = gql ` mutation register( $username: String: $email: String: $password: String: $confirmPassword: String: ){ register( RegisterInput: { username; $username email: $email password: $password confirmPassword: $confirmPassword } ){ id email username createdAt token } } ` export default Register;

它表明 err.graphQLErrors err.graphQLErrors[0]是未定义的,如果您不想要未定义的错误,您可以执行以下操作:

setErrors(err&&err.graphQLErrors[0]?err.graphQLErrors[0].extensions.exception.errors:{});

更改您的setErrors

setErrors(err.graphQLErrors[0].extensions.exception.errors);

setErrors(err.graphQLErrors[0].extensions.errors);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM