Nat*_*han 10 syntax-error apollo graphql react-apollo graphql-tag
我正在尝试在新的React项目中设置Apollo GraphQL支持,但是当我尝试使用编译查询时,gql
我一直收到错误消息:
Syntax Error: Expected Name, found }
这是由以下代码生成的:
import gql from 'graphql-tag'
const query = gql`
{
user(id: 5) {
firstName
lastName
}
}
`
console.log(query)
Run Code Online (Sandbox Code Playgroud)
我将此代码基于此处的示例代码:https : //github.com/apollographql/graphql-tag
什么是Name
错误消息称?有人知道我在做什么错吗?
Ezr*_*ton 10
类似错误的另一个示例(对于其他用户)。
theErrorIsHere
(可以是额外的(
或 {
之前$varName
添加的)$speakerId
错误代码:
const FEATURED_SPEAKER = gql`
mutation markFeatured($speakerId: ID!, $featured: Boolean!){
markFeatured(speaker_id: theErrorIsHere$speakerId , featured: $featured){
id
featured
}
}
`;
Run Code Online (Sandbox Code Playgroud)
正确代码:
const FEATURED_SPEAKER = gql`
mutation markFeatured($speakerId: ID!, $featured: Boolean!){
markFeatured(speaker_id: $speakerId , featured: $featured){
id
featured
}
}
`;
Run Code Online (Sandbox Code Playgroud)
原因可能是您无缘无故地添加了“()”,或者您需要添加更多“嵌套”参数。(特别是如果您使用在线 GraphiQL 编辑器)
错误的代码(额外的括号)
{
allFilms() {
films {
title
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误的代码(更多参数需要它,例如:标题)
{
allFilms {
films {
}
}
}
Run Code Online (Sandbox Code Playgroud)
正确的代码
{
allFilms {
films {
title
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不是 100% 确定我的问题的根源是什么,但是将所有查询代码移动到一个单独的 es6 模块中解决了这个问题。周围的代码一定有某种污染。作为参考,我的查询嵌入在 React 组件中。
这有效:
import gql from 'graphql-tag'
const query = gql`
{
user(id: 5) {
firstName
lastName
}
}
`
export default query
Run Code Online (Sandbox Code Playgroud)
小智 5
我发现接受的答案不能解决我的问题。我发现行之有效的是,如果您删除了最初的大括号。查询应该看起来像这样:
const query=gql`
user(id: 5) {
firstName
lastName
}
`
Run Code Online (Sandbox Code Playgroud)
导致此错误的另一个原因:您正在引用进一步定义的类型。向上移动您正在引用的类型。
例如:
type Launch {
rocket: Rocket
}
type Rocket {
name: String
}
Run Code Online (Sandbox Code Playgroud)
将抛出错误,因为定义了之前的Launch
引用。 Rocket
Rocket
更正后的代码:
type Rocket {
name: String
}
type Launch {
rocket: Rocket
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20581 次 |
最近记录: |