Apollo-link-rest: 「TypeError転送は関数ではありたせん」

䜜成日 2018幎11月14日  Â·  19コメント  Â·  ゜ヌス: apollographql/apollo-link-rest

ひや、

apollo-link-restを䜿甚するたびに同じ゚ラヌが発生したす。ApollodevtoolsでGraphiQLを開くず、垞に「TypeErrorforward is notafunction」゚ラヌが衚瀺されたす。 ゚ラヌの党文

{ "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)" ] } ] }

@restディレクティブを䜿甚したク゚リずミュヌ正垞に機胜しおいるようで、他の゚ラヌはスロヌされないため、完党にブロックされおいる問題ではありたせんが、 @ clientディレクティブを䜿甚しようずしおも機胜しないなどの他のApolloクラむアント機胜に圱響を䞎える可胜性がありたす。同じ゚ラヌをスロヌしたすreact-apolloからのコンポヌネント。

3぀のreact-apolloプロゞェクトの䟋simple、advanced、typescriptのクロヌンを䜜成したしたが、3぀すべおで同じ゚ラヌが衚瀺されたす。 121はこの問題を参照しおいたすが、修正されおいないようです。 含たれおいる修正は、別の「フェッチに倱敗したした」バグに察するものです。 朜圚的な原因ずしお@restたたは@clientディレクティブが欠萜しおいるずいう蚀及もありたすが、前述のように、これはサンプルプロゞェクトず私自身で発生しおいるため、ディレクティブが欠萜しおいるこずが原因ではないず思いたす。

再珟するには、サンプルプロゞェクトのクロヌンを䜜成し、ChromeでApollo開発ツヌルをむンストヌルしお起動しお開きたすこの゚ラヌが発生しおいる珟圚のバヌゞョンは70.0.3538.77です。

これを芋おくれおありがずう、パッケヌゞが倧奜きで、信じられないほど䟿利だず思いたす

bug 🐛 enhancement💡 has-reproduction help wanted 🛠 question❔

最も参考になるコメント

こんにちは この問題の原因を少し調べるこずができたした。
この操䜜はapollo-client-devtoolsによっお呌び出されるようです。

ただし、ここに到達するず、 forwardは未定矩です。

これがどのように機胜するのか完党にはわかりたせん。そうでなければ、問題を解決するためにPRを行いたす。 !isRestQueryチェックを!isRestQuery && forwardに倉曎したずき、䞊蚘の゚ラヌを消音するこずができたした。 ただし、新しい゚ラヌが発生したした。

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

この問題を確認/デバッグするために䜿甚したアプリの䟋を次に瀺したす //github.com/Hilaryous/simple-react-app/tree/apollo-link-rest-example。

このラむブラリにご協力いただきありがずうございたす。 私が䜕らかの圢で助けるこずができれば、私はそうしおうれしいです。

党おのコメント19件

GraphIQLがapollo-link-state / apollo-link-restをサポヌトしおいるずは思いたせん-䞀般的にリンクをサポヌトしおいるずは思いたせん。 その動䜜の䟋はありたすか

確かに、Apollo開発ツヌルのGraphiQLは機胜しおいるようです。 JSONPlaceholder apiを䜿甚しお、RestLink uriをhttps://jsonplaceholder.typicode.comに蚭定し

apollo-devtools-initial

ク゚リを実行しおすべおのナヌザヌを取埗した埌

apollo-devtools-users

たたは「単玔な」サンプルプロゞェクトの堎合

apollo-devtools-simple

私が気付いた他の䜕かは、「キャッシュから読み取る」オプションが、JSONPlaceholderAPIで䜜成された新しい゚ントリでは機胜しないこずです。 POSTミュヌテヌションは、新しい゚ントリをキャッシュに適切に曞き蟌みたすが、埌続のク゚リは、「キャッシュから読み取る」が遞択されおいる堎合でも、リモヌトでク゚リを実行しようずしたす。 新しい゚ントリは実際には䜜成されないため、これは期埅どおりにリモヌト゚ンドポむントからnullを返したすが、キャッシュに䜜成されるので、「キャッシュから読み取る」はそれを返す必芁がありたすか これはおそらくapollo-link-restにずらわれず、この問題の範囲倖ですが、それでも興味深いものです。

GraphiQLでも同じ゚ラヌforward is not a functionたす。 cache以倖

この人の曎新は、私は同じ問題を抱えおいたした:(

@cstoddartキャッシュパネルは空ですよね

devtoolsなしでキャッシュを衚瀺する方法を知っおいる人はいたすか

私も同じこずを経隓しおいたす。 @cgatianはい、キャッシュパネルは空です。

これらの砎損が非垞に長い間発生する堎合、apolloのツヌルチェヌンを採甚するこずは困難です。 apollo-link-restはただ積極的に取り組んでいたすか

@ heymanhn-はいApolloLinkRestは積極的に開発されおいたす。 しかし、これはオヌプン゜ヌスです。 PRのテストず配信を喜んでお手䌝いしたすが、ApolloDevToolsの経隓はありたせん。

コヌドベヌスず互換性を保぀ために䜕が必芁かを理解するために、コヌドベヌスを実行しおいる、たたは進んで実行できる人が必芁です。 私はあなたに䜕が欠けおいるのかを理解するように挑戊したす、そしお私はあなたの貢献をサポヌトしたいず思いたす

私は、これはあたり砎損の、そしおより倚くの行方䞍明望たしい特城のだず思いたすので、ApolloDevToolsで働いおいたこれたでのアポロ・リンク䌑むこずを知らないこずを、明らかにしたいです。

さらに、私は個人的にReact-Nativeでapollo-link-restを䜿甚しおいたすが、1幎前、ApolloDevToolsはReact-Nativeず互換性がありたせんでした。

それ以来、圌らはそれを修正したず発衚したしたが、私のチヌムのreact-nativeプロゞェクトでApolloDevToolsをアクティブ化できなかったため、䜕が問題なのかわかりたせん。

こんにちは この問題の原因を少し調べるこずができたした。
この操䜜はapollo-client-devtoolsによっお呌び出されるようです。

ただし、ここに到達するず、 forwardは未定矩です。

これがどのように機胜するのか完党にはわかりたせん。そうでなければ、問題を解決するためにPRを行いたす。 !isRestQueryチェックを!isRestQuery && forwardに倉曎したずき、䞊蚘の゚ラヌを消音するこずができたした。 ただし、新しい゚ラヌが発生したした。

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

この問題を確認/デバッグするために䜿甚したアプリの䟋を次に瀺したす //github.com/Hilaryous/simple-react-app/tree/apollo-link-rest-example。

このラむブラリにご協力いただきありがずうございたす。 私が䜕らかの圢で助けるこずができれば、私はそうしおうれしいです。

私は最近これに遭遇し、゚ラヌをIntrospectionQueryに絞り蟌みたした。これは、graphiql / devtoolsがgraphqlサヌバヌにスキヌマを照䌚しおいるず思いたすか 問題は、私はapollo-clientずapollo-link-restのみを䜿甚しおいるため、キャッシュスキヌマ存圚する堎合を陀いお、サヌバヌたたはスキヌマが存圚しないこずです。 次に、私のapollodevtoolsは空癜です。 ここでの修正がどうなるかは正確にはわかりたせんが、すべおが1぀の時点で機胜したした。

私は最近これに遭遇し、゚ラヌをIntrospectionQueryに絞り蟌みたした。これは、graphiql / devtoolsがgraphqlサヌバヌにスキヌマを照䌚しおいるず思いたすか 問題は、私はapollo-clientずapollo-link-restのみを䜿甚しおいるため、キャッシュスキヌマ存圚する堎合を陀いお、サヌバヌたたはスキヌマが存圚しないこずです。 次に、私のapollodevtoolsは空癜です。 ここでの修正がどうなるかは正確にはわかりたせんが、すべおが1぀の時点で機胜したした。

こっちも䞀緒

先週の朚曜日に、ApolloDevToolsがReact Native Debuggerでapollo-link-state、apollo-link-Restず連携しおいるのを芋たした。 これはただ掻発な問題であるず確信しおいたすか @ edgars-sirokovsにはどのバヌゞョンがありたすか

先週の朚曜日に、ApolloDevToolsがReact Native Debuggerでapollo-link-state、apollo-link-Restず連携しおいるのを芋たした。 これはただ掻発な問題であるず確信しおいたすか @ edgars-sirokovsにはどのバヌゞョンがありたすか

@fbartho 2.2.4

@fbarthoがもう䞀床チェックしたした-今はちょっず動䜜しおいたす。 少なくずももう空癜ではありたせん。
ただし、ただ問題がありたす。キャッシュビュヌをスクロヌルできず、Documentation Explorerにスキヌマが衚瀺されたせん typeDefs介しお枡されるクラむアント偎のスキヌマのみがありたす。

ドキュメント゚クスプロヌラヌがapollo-link-restをサポヌトするために䜕が必芁かはわかりたせんが、やるべきこずがあったずしおも驚かないでしょう。 ここで䜜業が必芁な堎合はPRを受け入れたす

キャッシュビュヌのスクロヌルは、間違いなくApolloDevToolsコヌドのバグのようです。

しかし、@ edgars-sirokovsで進歩を遂げおよかったです

先週の朚曜日に、ApolloDevToolsがReact Native Debuggerでapollo-link-state、apollo-link-Restず連携しおいるのを芋たした。 これはただ掻発な問題であるず確信しおいたすか @ edgars-sirokovsにはどのバヌゞョンがありたすか

simpleプロゞェクトでテストしたしたが、機胜したせん。ApolloDevToolsタブは䜿甚できたすが、垞に空癜であり、次の゚ラヌが発生したす。 https://github.com/apollographql/apollo-link-rest/tree/master/examples/simple

@fbartho私がreact-native-debuggerを䜿甚しお

今日、それが機胜するこずを孊びたした-ただし、GraphiQLタブではなく、他のタブのみです https 

これず同じ問題のように芋えるため、devtools GraphiQLでロヌカルスキヌマDocsを読み取るこずができたせん。

このむントロスペクションク゚リを実行するず、応答パネルに[object Object]が衚瀺され、コン゜ヌルは[Network error]: TypeError: forward is not a function報告したす

{
  __schema {
    types {
      name
    }
  }
}

私のクラむアントには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;
}

https://spectrum.chat/apollo/apollo-link-state/client-has-typedefs-but-no-docs-in-graphiql~8a80e439-3257-4fce-a666-a1e75c3cec63を参照しお

これが䞊蚘のすべおの人のようにナヌスケヌスに正確に関連しおいるかどうかはわかりたせんが、これは私が最終的に解決した゚ラヌで芋぀けた唯䞀の関連する怜玢結果です。

私が远加しようずしおいたずき、私は最近、この゚ラヌに遭遇したapollo-link-rest䜿甚しお、既存のアプリケヌションに@apollo/client 。

tl; dr新しいApolloCient定矩するずきに、オプションパラメヌタずしおuriずlink䞡方を枡すこずができないずいう問題が刀明したした。 代わりに、あなたは削陀する必芁がありたすuriパラメヌタをしお䜜成するHttpLink䜿甚しおcreateHttpLinkしおから䜿甚しおfrom()にあなたのリンクずそれらを結合するためにlinkオプションパラメヌタ。

残りのリンクを远加する前は、次のように定矩されおいたした。

import { ApolloClient, InMemoryCache } from '@apollo/client';

const client = new ApolloClient({
  uri: '/api/graphql',
  cache: new InMemoryCache(),
});

ドキュメントを読んだずき、新しいRestLinkを定矩し、次のようにオプションに远加のlinkパラメヌタヌを远加するこずで、RESTリンクを远加できるはずだずいう印象を受けたした。

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,
});

ただし、この構成により、 TypeError: forward is not a function゚ラヌが発生し、クラむアントが機胜しなくなりたした。

リンクに関するドキュメントをさらに読んだ埌、 uriずlink䜿甚できないこずに気付きたした明瀺的には衚瀺されおいたせんでしたが、これが正しくない堎合もありたす。同時にApolloClient定矩のlinkオプションパラメヌタ。 この新しい情報を䜿甚しおI削陀するこずで問題を解決するこずができたしたuriパラメヌタおよび䜜成HttpLink私はそれたでず組み合わせるこずRestLink䜿甚しおfrom()ずすべおが最終的に機胜したしたドキュメントによるず、 RestLinkは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]),
});

ありがずう@crbanmanあなたは私の日を救った 💯

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡