7

The Goal:

I'm trying to query a specific character from a GraphQL server with relay.

The Problem:

The query works in GraphiQL. But here, when running "relay-compiler": "^1.4.1" I'm getting...

ERROR: Parse error: Error: FindGraphQLTags: Operation names in graphql tags must be prefixed with the module name and end in "Mutation", "Query", or "Subscription". Got clientQuery in module Jedi. in "components/Jedi.js"

The Question:

Can't I just query that specific character like in GraphiQL ? How can I achieve this?

The Code:

import React from 'react'
import { QueryRenderer, graphql } from 'react-relay'

const BlogPostPreview = props => {
 return (
   <div key={props.post.id}>{props.post.name}</div>
 )
}

export default QueryRenderer(BlogPostPreview, {
post: graphql`
         query clientQuery {
           character(id: 1000) {
             id
             name
             appearsIn
          }
        }
    `
})

2 Answers2

8

Operation names in graphql tags must be prefixed with the module name

You should rename your query (clientQuery) to BlogPostPreviewQuery if BlogPostPreview is the name of your module.

Smek
  • 1,158
  • 11
  • 33
5

Here are examples. If query is in:

  • /app/foo.js - fooQuery or fooAnythingQuery
  • /app/foo/index.js - fooQuery or fooAnythingQuery
  • /app/Foo/index.js - FooQuery or FooAnythingQuery
  • /app/foo/bar.js - barQuery or barAnythingQuery
srghma
  • 4,770
  • 2
  • 38
  • 54