getStaticPropsで、Apollo Clientを使うと出たエラーへの対処
前提
Next.js, Auth0, Hasura, Apolloを使用しています。
問題
[quizId].tsx
export const getStaticProps: GetStaticProps = async (context) => {
const apolloClient = initializeApollo()
const { data } = await apolloClient.query<GetQuizByIdQuery>({
query: GET_QUIZ_BY_ID,
variables: { id: context.params.quizId },
})
return {
props: { data: data.quiz_by_pk },
revalidate: 1,
}
}
export const getStaticProps: GetStaticProps = async (context) => {
const apolloClient = initializeApollo()
const { data } = await apolloClient.query<GetQuizByIdQuery>({
query: GET_QUIZ_BY_ID,
variables: { id: context.params.quizId },
})
return {
props: { data: data.quiz_by_pk },
revalidate: 1,
}
}
getStaticProps内で、Apolloの初期化を行うとエラーがでました。
Auth0を使用してない場合は、エラーは出ませんでした。
解決策
こちらに解決策がありました。
https://github.com/apollographql/apollo-client/issues/6765
get~propsのnode-fetchにパッチを当てることで、解決できるようです。
具体的には、_document.tsx内に下記を追記で解消できました。
import fetch from 'node-fetch'
import { abortableFetch } from 'abortcontroller-polyfill/dist/cjs-ponyfill'
global.fetch = abortableFetch(fetch).fetch
Auth0を使っていないAppでは出なかったエラーなので、@auth0/auth0-react辺りが怪しいと思いつつ、
いまいち原因がわかりませんでした。。。
Author And Source
この問題について(getStaticPropsで、Apollo Clientを使うと出たエラーへの対処), 我々は、より多くの情報をここで見つけました https://qiita.com/hiran/items/671a56c8dc1f0c87f0f4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .