После переустановки и удаления еще трех раз извлечения и извлечения узлов и импорта их повсюду, я обнаружил, что во время теста я однажды также перемещал «fetch: fetch» за пределы createHttpLink, но все еще внутри нового Apollo-Client на клиентеside.
Наконец, он работает со следующим импортом:
import fetch from 'unfetch';
import React from 'react';
import { Accounts } from 'meteor/accounts-base';
import { Meteor } from 'meteor/meteor';
import { onPageLoad } from 'meteor/server-render';
import { StaticRouter } from 'react-router-dom';
import { renderToString } from 'react-dom/server';
import { routes } from './../both/router';
import { ApolloProvider } from 'react-apollo';
import { ApolloClient } from 'apollo-client';
import { createHttpLink } from 'apollo-link-http';
import { InMemoryCache } from 'apollo-cache-inmemory';
import Menu from './../../ui/Menu';
import './email-templates';
import './apollo';
import './users';
и следующим созданием клиента Apollo на стороне сервера для SSR:
onPageLoad((sink) => {
let App = props => (
<StaticRouter location={props.location}>
{routes}
</StaticRouter>
)
const client = new ApolloClient({
ssrMode: true,
link: createHttpLink({
uri: '/graphql',
credentials: 'same-origin',
headers: {
cookie: sink.request.cookies,
},
fetch: fetch,
}),
cache: new InMemoryCache(),
});
let AppToRender = props => (
<ApolloProvider client={client}>
<Menu />
<App />
</ApolloProvider>
)
sink.renderIntoElementById('app', renderToString(<AppToRender location={sink.request.url} />));
});
НеобходимоПризнаюсь, отступы на SO не очень хорошо показали, что было труднее решить мою проблему, но в моем проекте это было хорошо.Я пробовал так много разных вещей, что забыл вернуться с самого начала при создании клиента Apollo.