Вот здесь ты точно накосячил. Потому что getBeersVariables() у тебя возвращает объект {variables, page}, а ты это еще в variables скармливаешь (на уровень вглубь). Это все потому что ты в запрос в генерик не передал второй тип-параметр - BeersConnectionQueryVariables. Вот так:
const result = await apolloClient.query<BeersConnectionQuery, BeersConnectionQueryVariables>({
query: BeersConnectionDocument,
/**
* Важно, чтобы все переменные запроса серверные и фронтовые совпадали,
* иначе при рендеринге не будут получены данные из кеша и рендер будет пустой.
*/
variables: {
...getBeersVariables({ query }),
},
})
Вот передал бы, и получил ошибку:
Type '{ variables: Exact<{ where?: Maybe<BeerWhereInput> | undefined; orderBy?: Maybe<BeerOrderByInput> | undefined; first?: Maybe<number> | undefined; skip?: Maybe<...> | undefined; }>; page: number; }' has no properties in common with type 'Exact<{ where?: Maybe<BeerWhereInput> | undefined; orderBy?: Maybe<BeerOrderByInput> | undefined; first?: Maybe<number> | undefined; skip?: Maybe<...> | undefined; }>'.ts(2559)
UPD: Итоговый вариант вот такой:
BeersPage.getInitialProps = async ({ apolloClient, query }) => {
const { variables } = getBeersVariables({ query })
const result = await apolloClient.query<
BeersConnectionQuery,
BeersConnectionQueryVariables
>({
query: BeersConnectionDocument,
/**
* Важно, чтобы все переменные запроса серверные и фронтовые совпадали,
* иначе при рендеринге не будут получены данные из кеша и рендер будет пустой.
*/
variables,
})
return {
statusCode: !result.data.beersConnection.edges.length ? 404 : undefined,
}
}
export default BeersPage
А так у тебя, если отключить JS, с сервера сотраница приходит без списка пива.