Migration from Express GraphQL – GraphQL Yoga

v3 (latest)

Migration

Express GraphQL

Migration from Express GraphQL

Installation

You can start with installing graphql-yoga package.

Terminal

yarn add graphql-yoga

Replace Express GraphQL’s middleware

You should replace Express GraphQL’s middleware with GraphQL Yoga’s;

const express = require('express');

- const { graphqlHTTP } = require('express-graphql');

+ const { createYoga } = require('graphql-yoga');

const { schema } = require('./schema');

const app = express();

-app.use('/graphql', graphqlHTTP(req => ({

- schema: schema,

- context: {

- token: req.headers.authorization

- },

- graphiql: true,

-})));

+const yoga = createYoga({

+ schema,

+ context: (req) => ({ // Context factory gets called for every request

+ myToken: req.headers.get('authorization'),

+ }),

+ graphiql: true,

+})

+

+app.use('/graphql', yoga);

app.listen(4000);

console.log('Running a GraphQL API server at http://localhost:4000/graphql');

schema, context and other parameters can be passed dynamically per HTTP request. context parameter of GraphQL Yoga can be a factory function but schema cannot. So you should use @envelop/use-lazy-loaded-schema (opens in a new tab) for the same behavior.