Perilaku yang Diharapkan
Saat menggunakan onError()
dari @apollo/link-error
kami tidak mendapatkan kesalahan atas permintaan GraphQL.
Perilaku Sebenarnya
Dep:
"dependencies": {
"@apollo/client": "^3.0.0-beta.34",
"@apollo/link-error": "2.0.0-beta.3",
Mempersiapkan:
import {
ApolloClient,
ApolloProvider,
InMemoryCache,
} from '@apollo/client';
import { onError } from '@apollo/link-error';
const apolloClient = new ApolloClient({
uri: '/graphql',
// rehydration using the initial state
cache: new InMemoryCache().restore(apolloState),
link: onError(({ graphQLErrors, networkError }) => {
console.log(graphQLErrors, networkError);
}),
});
Saat berinteraksi dengan komponen yang membuat permintaan GraphQL, sayangnya hanya ini yang saya dapatkan.
Melanggar pengecualian, saya mendapatkan ini di bundel saya:
Reproduksi _sederhana_
Saya mencoba mengatur Codesanbox, tetapi gagal untuk AC 3.0 dengan masalah ketergantungan samar:
https://codesandbox.io/s/apolloclient-3-local-state-management-before-reactive-variables-nr1kg
Saya mengalami masalah yang sama saat memutakhirkan ke beta.
Sepertinya itu hilang jika HttpLink disertakan alih-alih penggunaan uri
langsung.
Jadi mungkin lib salah mengharapkan untuk selalu memiliki item berikutnya dalam rantai dan fungsi forward
hadir?
Saya mendapatkan kesalahan ini ketika networkError
terjadi dengan apollo-link-context
, apollo-link-error
, dan apollo-link-http
:
import { ApolloClient } from 'apollo-client'
import { HttpLink } from 'apollo-link-http'
import { setContext } from 'apollo-link-context'
import { onError } from 'apollo-link-error'
import { InMemoryCache } from 'apollo-cache-inmemory'
const httpLink = new HttpLink({
uri: // my api URI
})
const authLink = setContext((_, { headers }) => {
// my authorization stuff
})
const errorLink = onError(({ graphQLErrors, networkError }) => {
// my error handling logic
})
const apolloClient = new ApolloClient({
link: authLink.concat(errorLink, httpLink),
cache: new InMemoryCache()
})
[diedit] Adakah pembaruan tentang ini? Saya menggunakan versi RC dan masih mendapatkan kesalahan yang sama tanpa HTTPLINK
"@apollo/client": "^3.0.0-rc.10",
"@apollo/link-batch-http": "^2.0.0-beta.3",
"@apollo/link-context": "^2.0.0-beta.3",
"@apollo/link-error": "^2.0.0-beta.3",
"@apollo/link-retry": "^2.0.0-beta.3",
Tetapi untuk membuka blokir, ini berfungsi untuk saya
const link = from([ authLink, logoutLink, new HttpLink({ uri }) ]);
return new ApolloClient({
name: APOLLO_CLIENT_NAME,
version: config.appVersion,
connectToDevTools: true,
link,
cache
});
Komentar yang paling membantu
Saya mendapatkan kesalahan ini ketika
networkError
terjadi denganapollo-link-context
,apollo-link-error
, danapollo-link-http
: