/** * Using next-with-apollo * https://github.com/lfades/next-with-apollo * * Changes: * * Reading endpoint and prodEndpoint from a config file * * Setting request to handle credentials. */ import withApollo from 'next-with-apollo' import ApolloClient from 'apollo-client' import { InMemoryCache } from 'apollo-cache-inmemory' import { onError } from 'apollo-link-error' import { ApolloLink } from 'apollo-link' const cache = new InMemoryCache() function createClient({ ctx, headers }) { return new ApolloClient({ link: ApolloLink.from([ onError(({ graphQLErrors, networkError }) => { if (graphQLErrors) { graphQLErrors.map(({ message, locations, path }) => console.log( `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}` ) ) } if (networkError) console.log(`[Network error]: ${networkError}`) }) ]), fetchOptions: { mode: 'no-cors' }, cache }) } export default withApollo(createClient)