3

私は GraphQL と Apollo を初めて使用し、node.js で apolloClient を設定するのに本当に苦労しています。

最初に、 nuxt の apollo モジュールを使用して、nuxt 内に apollo クライアントを正常にセットアップしたことを述べたいと思います。

したがって、エンドポイントとトークンが機能していることは完全に確信しています。

ここで、node.js で実行したい JavaScript ファイル内で apollo クライアントをセットアップしたいと考えました。

import fetch from 'node-fetch'
import gql from 'graphql-tag'
import { ApolloClient } from 'apollo-client'
import { createHttpLink } from 'apollo-link-http'
import { setContext } from 'apollo-link-context'

export default function generateRoutesFromData(
  options = {
    api: [],
    query: '',
    token: '',
    bundle: '',
    homeSlug: 'home',
    errorPrefix: 'error-'
  }
) {
  const uri = 'https://example.com/api'
  const token =
    '...fPsvYqkheQXXmlWgb...'

  const httpLink = createHttpLink({ uri, fetch })

  const authLink = setContext((_, { headers }) => {
    // return the headers to the context so httpLink can read them
    return {
      headers: {
        ...headers,
        authorization: `Bearer ${token}`
      }
    }
  })

  const GET_PAGES = gql`
    {
      helloWorld
    }
  `

  const client = new ApolloClient({
    link: authLink.concat(httpLink),
    fetch
  })

  client
    .query({
      query: GET_PAGES
    })
    .then(result => {
      console.log('result: ', result)
    })
    .catch(error => {
      console.log('error: ', error)
    })

  // for now just return array with a test string
  // later on: return all uris fetched via graphql
  return ['/test']
}

これをノードで実行すると、次のエラーが発生します。

致命的な不変違反: 1 ( https://github.com/apollographql/invariant-packagesを参照) 00:05:36

不変違反: 不変違反: 1 ( https://github.com/apollographql/invariant-packagesを参照)

新しい InvariantError (packages/.../node_modules/ts-invariant/lib/invariant.js:16:28) で

新しい ApolloClient で (packages/.../node_modules/apollo-client/bundle.umd.js:2483:55)

オブジェクトの generateRoutesFromData (packages/.../src/routes/generateRoutesFromData.js:41:18) で。(nuxt.config.js:158:10) Generator.next () で

約 1.5 時間グーグルで検索しましたが、何の進展もありませんでした... エラー メッセージは非常に不可解で、どうすればよいかわかりません。

apollo に関するドキュメント全体はかなり混乱していると言わざるを得ません。Apollo-boost と、apollo クライアントの他のすべてのものをラップします。さまざまな認証方法など

私はこのページを見つけました: https ://www.apollographql.com/docs/react/advanced/boost-migration/

これについての助けは大歓迎です!乾杯

4

1 に答える 1