Hai,
Saya telah menemukan kesalahan yang sama setiap kali saya menggunakan apollo-link-rest: membuka GraphiQL di devtools Apollo selalu menunjukkan kesalahan "TypeError: forward is not a function". Teks lengkap dari kesalahan tersebut:
{
"errors": [
{
"message": "forward is not a function",
"locations": [
"TypeError: forward is not a function\n at RestLink../node_modules/apollo-link-rest/bundle.umd.js.RestLink.request (http://localhost:3000/static/js/bundle.js:5566:24)\n at http://localhost:3000/static/js/bundle.js:5746:33\n at ApolloLink.request (http://localhost:3000/static/js/bundle.js:2602:20)\n at ApolloLink.request (http://localhost:3000/static/js/bundle.js:5745:31)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:3681\n at e.request (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38654)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:3681\n at e.request (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38421)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:3681\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38085\n at new s (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:4855)\n at l.subscribe (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:6185)\n at n.<anonymous> (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:38914)\n at n.t.emit (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:52786)\n at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:19519\n at n (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/backend.js:1:36148)"
]
}
]
}
Kueri dan mutasi dengan direktif @rest tampaknya berfungsi dengan baik dan tidak menimbulkan kesalahan lain, jadi ini bukan masalah pemblokiran sepenuhnya, tetapi berpotensi memengaruhi beberapa kemampuan Klien Apollo lainnya, misalnya mencoba menggunakan direktif @client tidak berfungsi dan menampilkan error yang sama (seperti error payload di file
Saya mengkloning tiga contoh proyek react-apollo (sederhana, lanjutan, skrip) dan kesalahan yang sama muncul di ketiganya. # 121 merujuk masalah ini tetapi tampaknya tidak ada perbaikan; perbaikan yang disertakan adalah untuk bug "gagal diambil" yang terpisah. Ada juga yang menyebutkan arahan @rest atau @client yang hilang sebagai penyebab potensial, tetapi seperti yang disebutkan, ini terjadi dengan proyek sampel dan juga proyek saya sendiri, jadi saya rasa direktif yang hilang bukanlah penyebabnya.
Untuk mereproduksi, cukup klon proyek contoh, instal dan mulai dan buka alat dev Apollo di Chrome (versi saat ini saya mengalami kesalahan ini adalah 70.0.3538.77).
Terima kasih telah melihat ini, suka paketnya dan merasa sangat berguna!
Saya tidak berpikir GraphIQL mendukung apollo-link-state / apollo-link-rest - Saya rasa mereka tidak mendukung tautan secara umum. Apakah Anda memiliki contoh yang berhasil?
Tentu, GraphiQL di alat dev Apollo tampaknya berfungsi. Menggunakan api JSONPlaceholder , RestLink uri diatur ke https://jsonplaceholder.typicode.com - inilah yang saya dapatkan pada awalnya sebelum kueri apa pun dijalankan:
setelah menjalankan kueri untuk mendapatkan semua pengguna:
atau dengan proyek contoh "sederhana":
Hal lain yang saya perhatikan adalah bahwa opsi "baca dari cache" tidak berfungsi dengan entri baru yang dibuat dengan api JSONPlaceholder; mutasi POST menulis entri baru ke cache dengan benar, tetapi kueri berikutnya mencoba untuk melakukan kueri dari jarak jauh bahkan dengan memilih "baca dari cache". Karena entri baru sebenarnya tidak dibuat, ini mengembalikan null dari titik akhir jarak jauh seperti yang diharapkan, tetapi dibuat dalam cache, jadi "baca dari cache" harus mengembalikannya? Ini mungkin agnostik untuk apollo-link-rest, dan di luar cakupan masalah ini, tapi masih menarik.
Saya mendapatkan kesalahan yang sama di GraphiQL, forward is not a function
. Segala sesuatu selain cache
tampaknya berfungsi.
Setiap pembaruan pada orang ini, saya memiliki masalah yang sama :(
@cstoddart Panel cache Anda kosong, benar?
Adakah yang tahu cara melihat cache tanpa devtools?
Saya mengalami hal yang sama. @cgatian ya, panel cache saya kosong.
Sulit untuk merangkul toolchain apollo jika kerusakan ini terjadi begitu lama. Apakah apollo-link-rest masih dikerjakan secara aktif?
@heymanhn - Ya ApolloLinkRest sedang dikembangkan secara aktif. Tapi ini open source. Saya senang membantu Anda mendapatkan PR yang diuji & dikirim, tetapi saya tidak memiliki pengalaman dengan ApolloDevTools.
Kami membutuhkan seseorang yang melakukannya, atau bersedia untuk menyelami basis kode mereka untuk mencari tahu apa yang diperlukan agar kompatibel dengannya. Saya menantang Anda untuk mencari tahu apa yang hilang dan saya ingin mendukung kontribusi Anda!
Saya ingin menjelaskan, bahwa saya tidak tahu apollo-link-rest pernah bekerja dengan ApolloDevTools, jadi menurut saya ini bukan kerusakan, dan lebih banyak fitur yang diinginkan yang hilang .
Selain itu, saya pribadi menggunakan apollo-link-rest dengan React-Native, dan kembali setahun yang lalu, ApolloDevTools tidak kompatibel dengan React-Native.
Sejak itu mereka mengumumkan bahwa mereka memperbaikinya, tetapi saya belum dapat mengaktifkan ApolloDevTools untuk proyek react-native tim saya, jadi saya tidak tahu apa yang salah di sana.
Hai! Saya dapat melihat sedikit tentang apa yang menyebabkan masalah ini.
Sepertinya operasi ini dipanggil oleh apollo-client-devtools.
Namun ketika sampai di sini , forward
tidak ditentukan.
Saya tidak sepenuhnya yakin bagaimana ini semua bekerja jika tidak, saya akan membuat PR untuk memperbaiki masalah tersebut. Ketika saya mengubah cek !isRestQuery
menjadi !isRestQuery && forward
saya dapat membungkam kesalahan di atas. Namun, saya mendapat kesalahan baru:
Error: Type Query must define one or more fields.
at t.assertValidSchema (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:258433)
at O (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:272246)
at k (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:271277)
at t.execute (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:270565)
at t.v (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:806774)
at t.n.emit (chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:394893)
at chrome-extension://jdkknkkbebbapilgoeccciglkfbmbnfm/dist/devtools.js:1:517657
Berikut adalah contoh aplikasi yang saya gunakan untuk melihat / men-debug masalah ini: https://github.com/Hilaryous/simple-react-app/tree/apollo-link-rest-example.
Terima kasih atas semua pekerjaan Anda di perpustakaan ini. Jika saya dapat membantu dengan cara apa pun, saya senang melakukannya.
Saya mengalami ini baru-baru ini dan telah mempersempit kesalahan kasus saya ke IntrospectionQuery, yang menurut saya graphiql / devtools menanyakan server graphql untuk skema? Masalahnya, saya hanya menggunakan apollo-client dan apollo-link-rest, jadi tidak ada server atau skema, kecuali untuk skema cache (jika ada). Pada gilirannya, alat bantu apollo saya kosong. Tidak yakin apa perbaikannya di sini, semuanya bekerja pada satu titik.
Saya mengalami ini baru-baru ini dan telah mempersempit kesalahan kasus saya ke IntrospectionQuery, yang menurut saya graphiql / devtools menanyakan server graphql untuk skema? Masalahnya, saya hanya menggunakan apollo-client dan apollo-link-rest, jadi tidak ada server atau skema, kecuali untuk skema cache (jika ada). Pada gilirannya, alat bantu apollo saya kosong. Tidak yakin apa perbaikannya di sini, semuanya bekerja pada satu titik.
Sama disini
Kami melihat ApolloDevTools bekerja dengan apollo-link-state, apollo-link-Rest di React Native Debugger, paling lambat Kamis lalu. Apakah kami yakin ini masih masalah aktif? Versi apa Anda di @ edgars-sirokovs?
Kami melihat ApolloDevTools bekerja dengan apollo-link-state, apollo-link-Rest di React Native Debugger, paling lambat Kamis lalu. Apakah kami yakin ini masih masalah aktif? Versi apa Anda di @ edgars-sirokovs?
@bayu_joo 2.2.4
@fbartho baru saja memeriksa lagi - ini agak berfungsi sekarang. Setidaknya tidak kosong lagi.
Saya masih memiliki masalah - tidak dapat menggulir tampilan cache dan Penjelajah dokumentasi tidak menampilkan skema (saya hanya memiliki skema sisi klien yang diteruskan melalui typeDefs
).
Saya tidak tahu apa yang dibutuhkan penjelajah dokumentasi untuk mendukung apollo-link-rest tetapi tidak akan mengejutkan saya jika ada pekerjaan yang harus dilakukan, dan / atau tidak akan pernah berfungsi dengan baik. Menerima PR jika pekerjaan dibutuhkan di sini!
Menggulir tampilan cache pasti tampak seperti bug dalam kode ApolloDevTools,
Tapi saya senang Anda telah membuat kemajuan @ edgars-sirokovs!
Kami melihat ApolloDevTools bekerja dengan apollo-link-state, apollo-link-Rest di React Native Debugger, paling lambat Kamis lalu. Apakah kami yakin ini masih masalah aktif? Versi apa Anda di @ edgars-sirokovs?
Saya mengujinya dengan proyek simple
dan tidak berhasil, tab Apollo DevTools tersedia tetapi selalu kosong dan saya mendapatkan kesalahan berikutnya. https://github.com/apollographql/apollo-link-rest/tree/master/examples/simple
@fbartho Saya melakukan hal yang sama dengan proyek yang saya kerjakan bereaksi asli dengan react-native-debugger dan mendapat masalah yang sama. Bisakah Anda membagikan penyiapan Anda atau versi apa yang Anda gunakan?
Kami belajar hari ini bahwa itu berfungsi - tetapi bukan tab GraphiQL, hanya tab lain: https://github.com/apollographql/apollo-client-devtools/issues/227
Karena apa yang tampaknya menjadi masalah yang sama ini, saya tidak dapat membaca skema lokal Docs
di devtools GraphiQL.
Menjalankan kueri introspeksi ini akan menampilkan [object Object]
di panel respons, dan laporan konsol [Network error]: TypeError: forward is not a function
{
__schema {
types {
name
}
}
}
Klien saya tidak memiliki server graphql:
import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { persistCache } from 'apollo-cache-persist';
import localForage from 'localforage';
import typeDefs from './schema.graphql';
import { resolvers } from './resolvers';
import { link } from './link';
import { initialState } from './initialState';
export let client;
export async function createApolloClient() {
const cache = new InMemoryCache();
await persistCache({ cache, storage: localForage, serialize: false });
client = new ApolloClient({ cache, link, resolvers, typeDefs });
window.__APOLLO_CLIENT__ = client;
cache.writeData({ data: initialState });
return client;
}
Tidak yakin apakah ini benar-benar terkait dengan kasus penggunaan seperti semua orang di atas, tetapi ini adalah satu-satunya hasil pencarian relevan yang dapat saya temukan dengan kesalahan yang saya dapatkan yang akhirnya saya selesaikan.
Baru-baru ini saya mengalami kesalahan ini ketika mencoba menambahkan apollo-link-rest
ke aplikasi yang sudah ada menggunakan @apollo/client
.
tl; dr Masalahnya ternyata Anda tidak dapat melewatkan uri
dan link
sebagai parameter opsi saat menentukan ApolloCient
. Sebagai gantinya, Anda harus menghapus parameter uri
dan membuat HttpLink
menggunakan createHttpLink
dan kemudian menggunakan from()
untuk menggabungkan tautan Anda dan tautan tersebut ke link
parameter opsi.
Sebelum saya menambahkan tautan lainnya, seperti inilah definisi saya:
import { ApolloClient, InMemoryCache } from '@apollo/client';
const client = new ApolloClient({
uri: '/api/graphql',
cache: new InMemoryCache(),
});
Saat membaca dokumentasi, saya mendapat kesan bahwa saya harus dapat menambahkan tautan istirahat dengan menentukan RestLink
dan menambahkan parameter link
ke opsi saya seperti ini:
import { ApolloClient, InMemoryCache } from '@apollo/client';
import { RestLink } from 'apollo-link-rest';
const restLink = new RestLink({
uri: '/api',
});
const client = new ApolloClient({
uri: '/api/graphql',
cache: new InMemoryCache(),
link: restLink,
});
Namun, konfigurasi ini menyebabkan kesalahan TypeError: forward is not a function
terjadi dan klien tidak lagi bekerja.
Setelah membaca lebih jauh ke dalam dokumentasi tentang tautan, saya menyadari (meskipun saya tidak dapat melihatnya secara eksplisit, dan mungkin ada kasus di mana ini salah) bahwa Anda tidak dapat menggunakan uri
dan link
opsi parameter dalam definisi ApolloClient
pada saat yang sama. Dengan menggunakan info baru ini saya dapat memperbaiki masalah dengan menghapus parameter uri
dan membuat HttpLink
yang kemudian saya gabungkan dengan RestLink
menggunakan from()
dan semuanya akhirnya bekerja (perhatikan bahwa sesuai dokumentasi , RestLink
harus pergi sebelum HttpLink
):
import {
ApolloClient, InMemoryCache, from, createHttpLink,
} from '@apollo/client';
import { RestLink } from 'apollo-link-rest';
const httpLink = createHttpLink({
uri: '/api/graphql',
});
const restLink = new RestLink({
uri: '/api',
});
const client = new ApolloClient({
cache: new InMemoryCache(),
link: from([restLink, httpLink]),
});
terima kasih @crbanman kamu menyelamatkan hariku! 💯
Komentar yang paling membantu
Hai! Saya dapat melihat sedikit tentang apa yang menyebabkan masalah ini.
Sepertinya operasi ini dipanggil oleh apollo-client-devtools.
Namun ketika sampai di sini ,
forward
tidak ditentukan.Saya tidak sepenuhnya yakin bagaimana ini semua bekerja jika tidak, saya akan membuat PR untuk memperbaiki masalah tersebut. Ketika saya mengubah cek
!isRestQuery
menjadi!isRestQuery && forward
saya dapat membungkam kesalahan di atas. Namun, saya mendapat kesalahan baru:Berikut adalah contoh aplikasi yang saya gunakan untuk melihat / men-debug masalah ini: https://github.com/Hilaryous/simple-react-app/tree/apollo-link-rest-example.
Terima kasih atas semua pekerjaan Anda di perpustakaan ini. Jika saya dapat membantu dengan cara apa pun, saya senang melakukannya.