Далее Js - Apollo - Первый рендер не SSR - PullRequest
1 голос
/ 14 марта 2020

Я использую Next Js (9.3.0) для SSR и graphQL (Apollo).

Мое приложение работает хорошо, но когда я проверяю, что видит Google, данные из Apollo не отображаются доступно

enter image description here

Если я делаю curl https://myWebsite.com в случайном порядке, у меня иногда есть контент (например, Google) без данных от Apollo, а иногда с данные от Apollo.

Для целей SEO мне всегда нужно иметь первый рендер (после refre sh) с указанными данными купить мой бэкэнд (Apollo)

Вот мой файл: apolloClient.tsx

import { ApolloClient } from "apollo-client";
import { AUTH_TOKEN } from "./config";
import { InMemoryCache } from "apollo-cache-inmemory";
import { HttpLink } from "apollo-link-http";
import Cookies from "js-cookie";
import fetch from "isomorphic-unfetch";
import nextCookies from "next-cookies";
import { uriBackend } from "./config";

let token = null;

export default function createApolloClient(initialState, ctx) {
  // The `ctx` (NextPageContext) will only be present on the server.
  // use it to extract auth headers (ctx.req) or similar.
  // on server
  if (ctx && ctx.req && ctx.req.headers["cookie"]) {
    token = nextCookies(ctx)[AUTH_TOKEN];

    // on client
  } else {
    // console.log("with data get client cookie");
    token = Cookies.get(AUTH_TOKEN);
  }
  const headers = token ? { Authorization: `Bearer ${token}` } : {};

  return new ApolloClient({
    ssrMode: Boolean(ctx),
    link: new HttpLink({
      uri: uriBackend, // Server URL (must be absolute)
      fetch,
      headers
    }),
    cache: new InMemoryCache().restore(initialState)
  });
}
...