Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阿波罗-未捕获(承诺中)错误:网络错误:无法读取属性';种类';未定义的_Javascript_Reactjs_Graphql_Apollo_React Apollo - Fatal编程技术网

Javascript 阿波罗-未捕获(承诺中)错误:网络错误:无法读取属性';种类';未定义的

Javascript 阿波罗-未捕获(承诺中)错误:网络错误:无法读取属性';种类';未定义的,javascript,reactjs,graphql,apollo,react-apollo,Javascript,Reactjs,Graphql,Apollo,React Apollo,我正在使用GraphQL和Apollo编写一个简单的登录表单。每次用户登录后,它都会重新提取查询以获取用户数据 import React, {Component} from 'react' import AuthForm from './AuthForm' import loginMutation from '../mutations/Login' import { graphql } from 'react-apollo' import userQuery from '../queries/C

我正在使用GraphQL和Apollo编写一个简单的登录表单。每次用户登录后,它都会重新提取查询以获取用户数据

import React, {Component} from 'react'
import AuthForm from './AuthForm'
import loginMutation from '../mutations/Login'
import { graphql } from 'react-apollo'
import userQuery from '../queries/CurrentUser'

//App.js

...
const networkInterface = createNetworkInterface({
  uri: '/graphql',
  opts: {
    credentials: 'same-origin',
  }
})

const client = new ApolloClient({
  dataIdFromObject: o => o.id,
  networkInterface
})
...

//Login.js
class LoginForm extends Component {

onSubmit({ email, password }) {
    this.props.mutate({
        variables: { email, password },
        refetchQueries: [{ userQuery, varibles: null }]
    })
}

render() {
    return (
        <div>
            <h3>Login</h3>
            <AuthForm onSubmit={ this.onSubmit.bind(this) }/> 
        </div>
    )
}
}


export default graphql(loginMutation)(LoginForm)
//userQuery.js
import gql from 'graphql-tag'

export default gql`
    {
        user{
            id
            email
        }
    }
`
import React,{Component}来自“React”
从“/AuthForm”导入AuthForm
从“../mutations/Login”导入LoginMutate
从'react apollo'导入{graphql}
从“../queries/CurrentUser”导入userQuery
//App.js
...
const networkInterface=createNetworkInterface({
uri:“/graphql”,
选择:{
凭据:“相同来源”,
}
})
const客户端=新客户端({
dataIdFromObject:o=>o.id,
网络接口
})
...
//Login.js
类LoginForm扩展组件{
onSubmit({电子邮件,密码}){
这个。道具。变异({
变量:{email,password},
refetchQueries:[{userQuery,varibles:null}]
})
}
render(){
返回(
登录
)
}
}
导出默认图形QL(LoginMutate)(LoginForm)
//userQuery.js
从“graphql标记”导入gql
导出默认gql`
{
使用者{
身份证件
电子邮件
}
}
`
问题是用户可以登录,但用户查询没有被重新提取。相反,我一直收到以下错误消息:
Uncaught(in-promise)错误:网络错误:无法读取属性'kind'的未定义错误(bundle.js:6231)
。 我找不到这个问题的原因。有人能帮我解决这个问题吗

refetchQueries: [{ userQuery, varibles: null }]
refetchquerys
属性的数组中,您有一个对象
userQuery
,您正在解构该对象,解构时该对象将是
{userQuery:userQuery}
。Apollo客户端无法识别此属性,它应该是
{query:userQuery}
变量:null
中也存在拼写错误。它应该是
变量:null

更正代码:

onSubmit({ email, password }) {
    this.props.mutate({
        variables: { email, password },
        refetchQueries: [{ query: userQuery, variables: null }]
    })
}