<p>apollo-link-error:タイプ「ApolloLink」をタイプ「ApolloLink」に割り当てることはできません。 この名前の2つの異なるタイプが存在しますが、それらは無関係です。</p>

作成日 2018年03月07日  ·  27コメント  ·  ソース: apollographql/apollo-link

予想される行動

apollo-link-errorによって作成されたApolloLinkタイプonError ApolloLinkは、apollo-link-httpおよびapollo-clientによって使用される

実際の動作

結果のapollo-link- *パッケージには、互換性のない2つのApolloLinkタイプがあるようです。

以下の例では、マークされた場所でTypeScriptエラーが返されますが、マークされた場所にas anyを追加すると期待どおりに機能します。

_単純_再生産

import { InMemoryCache } from 'apollo-cache-inmemory'
import ApolloClient from 'apollo-client'
import { ApolloLink } from 'apollo-link'
import { onError } from 'apollo-link-error'
import { createHttpLink } from 'apollo-link-http'

const httpLink = createHttpLink({ uri: apiUrl })

const authLink = new ApolloLink((operation, forward) => {
  const token = getToken()
  if (token) {
    operation.setContext({
      headers: {
        Authorization: `Bearer ${token}`,
      },
    })
  }
  return forward(operation)
})

const logLink = onError(error => console.error('Apollo Error', error))  // as any

const link = logLink.concat(authLink.concat(httpLink))  // as any

/*
TS2345: Argument of type 'ApolloLink' is not assignable to parameter of type 'ApolloLink | RequestHandler'.
  Type 'ApolloLink' is not assignable to type 'RequestHandler'.
    Type 'ApolloLink' provides no match for the signature '(operation: Operation, forward?: NextLink): Observable<FetchResult<Record<string, any>, Record<string, any>>>'.
*/

export const graphql = new ApolloClient({
  cache: new InMemoryCache(),
  link,
})

/*
TS2345: Argument of type '{ cache: InMemoryCache; link: ApolloLink; }' is not assignable to parameter of type 'ApolloClientOptions<NormalizedCacheObject>'.
  Types of property 'link' are incompatible.
    Type 'ApolloLink' is not assignable to type 'ApolloLink'. Two different types with this name exist, but they are unrelated.
      Types of property 'split' are incompatible.
        Type '(test: (op: Operation) => boolean, left: ApolloLink | RequestHandler, right?: ApolloLink | Reques...' is not assignable to type '(test: (op: Operation) => boolean, left: ApolloLink | RequestHandler, right?: ApolloLink | Reques...'. Two different types with this name exist, but they are unrelated.
          Types of parameters 'left' and 'left' are incompatible.
            Type 'ApolloLink | RequestHandler' is not assignable to type 'ApolloLink | RequestHandler'. Two different types with this name exist, but they are unrelated.
              Type 'ApolloLink' is not assignable to type 'ApolloLink | RequestHandler'.
                Type 'ApolloLink' is not assignable to type 'RequestHandler'.

*/

発行ラベル

  • [x]持っている-複製
  • [ ] 特徴
  • []ブロッキング
  • []良い創刊号
has-reproduction

最も参考になるコメント

この問題も発生しています。

全てのコメント27件

この問題も発生しています。

こっちも一緒...

@iki興味深い、問題を開いてくれてありがとう! apollo-link-errorとapolo-link-httpを最新バージョンに更新しましたか? https://github.com/evans/apollo-link-reproductions/tree/538で「npmrunco​​mpile」を実行すると、タイプエラーは表示されません。 ApolloLinkのダックタイピングは同じである必要があるため、タイプは機能するはずです。 クローンできる複製リポジトリはありますか? TSの最小バージョンを宣言する必要があるかもしれませんか?

この問題が発生しましたが、 package.jsonapollo-linkのバージョンを次のように修正することで、問題が解決したようです。

{
    "dependencies": {
       "dependencies": {
        "apollo-cache-inmemory": "^1.1.12",
        "apollo-client": "^2.2.8",
        "apollo-codegen": "^0.19.0",
        "apollo-link": "^1.2.1",
        "apollo-link-batch-http": "^1.2.1",
        "apollo-link-http": "^1.5.3",
        "apollo-link-retry": "^2.2.2"
    },
    "resolutions": {
        "apollo-link": "1.2.1"
    }
}

graphql同様のことをして、コピーが1つだけ存在するようにする必要がありました。

これは最新のリリースで修正されるはずです。 # 500によって閉じられ、

@evans私はまだ待っている[email protected]私たちはこの問題の修正を得るように、リリースされます。 それは私が他のアポロパッケージをアップグレードするのを妨げています。

ここでも同じで、1.0.10の公開を待っています

@ravishivt @sccdGyan申し訳ありません! そこで何が起こったのかわかりません。 物事は[email protected]で整理する必要があります

私は同様の問題を抱えています:

関連する依存関係:

"dependencies": {
    "@apollo/client": "^3.0.0-beta.19",
    "apollo-link-ws": "^1.0.19",
    "graphql": "^14.5.8",
    "subscriptions-transport-ws": "^0.9.16",
    ...
  },

コード:

import {
    ApolloClient,
    InMemoryCache,
    HttpLink,
    ApolloLink,
    Operation,
    NextLink,
    split,
    getMainDefinition
} from '@apollo/client'
import { WebSocketLink } from 'apollo-link-ws';

const wsLink = new WebSocketLink({
    uri: config.backendWSApiUrl,
    options: {
        reconnect: true
    }
})

const httpLink = new HttpLink({
    uri: config.backendHttpApiUrl
})

const link = split(
    // split based on operation type
    ({ query }) => {
        const definition = getMainDefinition(query);
        return (
            definition.kind === 'OperationDefinition' &&
            definition.operation === 'subscription'
        );
    },
    wsLink,
    httpLink,
);


Typescriptエラー:

Argument of type 'WebSocketLink' is not assignable to parameter of type 'ApolloLink | RequestHandler'.
  Type 'WebSocketLink' is missing the following properties from type 'ApolloLink': onError, setOnErrorts(2345)

3.0ベータ版の@mnesarcoと同じ

私は同じに遭遇しています
"@apollo/client": "~3.0.0-beta.29および"@apollo/link-error": "^2.0.0-beta.3",
ApolloLink.from([errorLink, httpLink])

@smeevilこれに対する修正を見つけましたか、私も同じように直面しています

いいえ

これを再開する必要がありますか?

最新のApolloクライアント3.0.0ベータ32バージョンを更新すると、問題が解決しました

1.1.12から[email protected]に更新すると

今使っている私にとってはすべて良い

"@apollo/client": "^3.0.0-beta.37",
"@apollo/link-context": "^2.0.0-beta.3",
"@apollo/link-error": "^2.0.0-beta.3",
"@apollo/link-retry": "^2.0.0-beta.3",
"@apollo/link-ws": "^2.0.0-beta.3",`

今使っている私にとってはすべて良い

"@apollo/client": "^3.0.0-beta.37",
"@apollo/link-context": "^2.0.0-beta.3",
"@apollo/link-error": "^2.0.0-beta.3",
"@apollo/link-retry": "^2.0.0-beta.3",
"@apollo/link-ws": "^2.0.0-beta.3",`

ありがとう! @ apollo / clientを3.0.0-beta.39に更新すると、このエラーが発生します。

使用して@apollo/link-errorの代わりにapollo-link-error私のために働きました。

私はApolloを初めて使用しますが、Apolloサーバーガイドに従ってこのエラーが発生しました。このガイドでは、Apolloリンクライブラリを直接使用せずにapollo-boostからApolloClientをインポートするように指示されています。 私のコードは次のようになります:

import ApolloClient from 'apollo-boost';

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

const App = ({ Component, pageProps }: AppProps) => {
  return (
    <ApolloProvider client={client}>
      <Component {...pageProps} />
    </ApolloProvider>
  )
}

@apollo/clientをインストールし、次のようにリファクタリングすることで修正できました。

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

const client = new ApolloClient({
  cache: new InMemoryStore(),
  link: new HttpLink({ uri: "/api/graphql" })
});

const App = ({ Component, pageProps }: AppProps) => {
  return (
    <ApolloProvider client={client}>
      <Component {...pageProps} />
    </ApolloProvider>
  )
}

ありがとう! @ apollo / clientを3.0.0-beta.39に更新すると、このエラーが発生します。

ありがたいことに、これはバージョン@ apollo / clientによって3.0.0-beta.41に修正されたようです。

今日、新しい3.0.0-beta.43を試したときに、この問題が発生しました。
それが他の誰かを助ける場合に備えて、どのように解決して共有することができました。

私の場合、package.jsonの「resolutions」フィールドをbeta.43に指定するか、または、 yarn.lockを削除して再インストールすると、これが整理されます。

3.0.0-beta.44。 package.jsonに解像度フィールドを追加してyarn.lockファイルを削除しようとしましたが、どちらも機能しませんでした。

私にとって、クライアントとリンクエラーをアップグレードすると、問題が修正されました。
"@ apollo / client": "^ 3.0.0-beta.49"、 "@ apollo / link-error": "^ 2.0.0-beta.3"

私は〜に乗っています

    "@apollo/client": "^3.0.0-beta.50",
    "@apollo/link-context": "^2.0.0-beta.3",

まだこの問題があります。

私は〜に乗っています

    "@apollo/client": "^3.0.0-beta.50",

    "@apollo/link-context": "^2.0.0-beta.3",

まだこの問題があります。

私のプロジェクトでは、package.jsonを注意深く確認し、Apolloが3.0であることを確認してから、yarn.lockを削除してyarnを再度インストールしました。

@onpawsに感謝しgraphql-codegen )があり、それらを削除するつもりがないことだと思います。 しかし、コード内の古いものを_インポート_していないので、Typescriptがそれらについて混乱する理由がわかりません。 しかし、私はTypescriptを初めて使用するので、これは「私」の問題である可能性があります。 ばかげているように見えますが、 as anyを介してキャストすれば、すべて正常に動作します。

export const client = new ApolloClient({
  cache: new InMemoryCache(),
  link: authenLink.concat(httpLink as any) as any
});
このページは役に立ちましたか?
0 / 5 - 0 評価