Я строю проект, используя React, Apollo и Next.js. Я пытаюсь обновить response-apollo до 3.1.3, и теперь я получаю следующую ошибку при просмотре сайта.
Инвариантное нарушение: не удалось найти «клиента» в контексте или переданов качестве опции. Оберните корневой компонент в или передайте экземпляр ApolloClient с помощью опций.
Если я понизил пакет response-apollo до версии 2.5.8, он работает без проблем, поэтому я думаю, что что-то изменилось между2.5 и 3.x, но не могу найти что-либо в реактивной реакции-apollo или next-with-apollo, чтобы указать, что это может быть. Любая помощь будет принята с благодарностью.
withData.js
import withApollo from 'next-with-apollo';
import ApolloClient from 'apollo-boost';
import { endpoint } from '../config';
function createClient({ headers }) {
return new ApolloClient({
uri: endpoint,
request: operation => {
operation.setContext({
fetchOptions: {
credentials: 'include'
},
headers
});
},
// local data
clientState: {
resolvers: {
Mutation: {}
},
defaults: {}
}
});
}
export default withApollo(createClient);
_app.js
import App from 'next/app';
import { ApolloProvider } from 'react-apollo';
import Page from '../components/Page';
import { Overlay } from '../components/styles/Overlay';
import withData from '../lib/withData';
class MyApp extends App {
static async getInitialProps({ Component, ctx }) {
let pageProps = {};
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx);
}
// this exposes the query to the user
pageProps.query = ctx.query;
return { pageProps };
}
render() {
const { Component, apollo, pageProps } = this.props;
return (
<ApolloProvider client={apollo}>
<Overlay id="page-overlay" />
<Page>
<Component {...pageProps} />
</Page>
</ApolloProvider>
);
}
}
export default withData(MyApp);