Alon Peretz Alon Peretz - 2 months ago 119
Node.js Question

GraphQL with express error : Query.example field type must be Output Type but got: [object Object]

Im trying to run express server with graphql and I get the following error:

Error: Query.example field type must be Output Type but got: [object Object].

express-graphql used in a route:

app.use('/graphql', graphqlHTTP(req => ({
schema,
pretty: true
})));


the schema looks like that:

export default new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: queries
})
});


queries has only one qurey that imported from here:

import {
GraphQLList,
GraphQLID,
GraphQLNonNull
} from 'graphql';

import exampleScheme from '../models/schemes/example';
import {example as exampleData} from '../models/jsons'

export default {
type: exampleScheme,
resolve (root, params, options) {
return exampleData;
}
};


The schemas(exampleScheme) and data (exampleScheme)are working on another project so I assume they`re not the problem.

Any ideas? What`s 'Output type' means?

Answer

if

export default {
 type: exampleScheme,
 resolve (root, params, options) {
     return exampleData;
 }
};

is your queries, then you got it wrong, Query's fields, hence queries in your example, should be looking like this:

export default {
 helloString: {
     type: GraphQLString,
     resolve (root, params, options) {
         return "Hello World!";
     }
 }
 ... <Next query>
};

anyway, the error is that 'type' is not a valid GraphQLType. then the query will look like this

query {
   testString
}

will result in:

{
    testString: "Hello World!"
}

if the meaning was that the exampleScheme is some other object, please make sure you are creating it using:

new GraphQLObjectType({ .... Options });

Hope it helps! :)