<p>apollo-link-error: النوع "ApolloLink" غير قابل للتخصيص لكتابة "ApolloLink". يوجد نوعان مختلفان بهذا الاسم ، لكنهما غير مرتبطين.</p>

تم إنشاؤها على ٧ مارس ٢٠١٨  ·  27تعليقات  ·  مصدر: apollographql/apollo-link

سلوك متوقع

نوع ApolloLink تم إنشاؤه بواسطة apollo-link-error onError shoud match ApolloLink المستخدم بواسطة apollo-link-http و apollo-client.

السلوك الفعلي

يبدو أن هناك نوعين غير متوافقين من أنواع ApolloLink في حزم apollo-link- * الناتجة.

يعرض المثال أدناه أخطاء 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 إلى أحدث إصدار؟ إذا قمت بتشغيل 'npm run compile' في https://github.com/evans/apollo-link-reproductions/tree/538 ، فلا أرى أي أخطاء في النوع. يجب أن تعمل الأنواع ، نظرًا لأن كتابة البطة ApolloLink يجب أن تكون متطابقة. هل لديك مستودع استنساخ يمكنني استنساخه؟ قد نضطر إلى إعلان الحد الأدنى من إصدار TS؟

واجهت هذه المشكلة ، ويبدو أنني قمت بحلها عن طريق إصلاح إصدار apollo-link في package.json النحو التالي:

{
    "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 للتأكد من وجود نسخة واحدة فقط منه.

يجب إصلاح هذا في أحدث إصدار. راجع # 599 ، الذي تم إغلاقه بواسطة # 600 وتم إصداره في [email protected]

evans ما زلت أنتظر إطلاق سراح [email protected] حتى نحصل على إصلاحات لهذه المشكلة. إنه يمنعني من ترقية حزم أبولو الأخرى.

نفس الشيء هنا ، في انتظار نشر 1.0.10

ravishivtsccdGyan عذرا عن ذلك! لست متأكدًا مما حدث هناك. يجب فرز الأشياء في

لدي مشكلة مماثلة:

التبعيات ذات الصلة:

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


خطأ مطبعي:

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)

مثل mnesarco مع الإصدار التجريبي 3.0

أواجه نفس الشيء مع
"@apollo/client": "~3.0.0-beta.29 و "@apollo/link-error": "^2.0.0-beta.3",
باستخدام ApolloLink.from([errorLink, httpLink])

smeevil هل وجدت أي إصلاح في هذا الأمر ، فأنا أيضًا أواجه نفس المشكلة

لا

هل يجب إعادة فتح هذا؟

أدى تحديث أحدث إصدار من عميل Apollo 3.0.0 beta 32 إلى حل المشكلة بالنسبة لي

التحديث إلى [email protected] من 1.1.12 يعمل بالنسبة لي.

كل خير بالنسبة لي الآن باستخدام

"@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 Server ، والذي يرشدك إلى استيراد ApolloClient من apollo-boost دون استخدام مكتبات روابط Apollo مباشرة. يبدو الرمز الخاص بي مثل:

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 "الحل" إلى beta.43 أو ، بدلاً من ذلك ، حذف yarn.lock وإعادة تثبيت هذا الحقل.

في الإصدار 3.0.0-بيتا 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 وتثبيت الغزل مرة أخرى.

شكرا onpaws . أعتقد أن مشكلتي هي أن لدي بالفعل تبعيات (مطور) أخرى لها نفسها Apollo "القديمة" كتبعيات (على سبيل المثال graphql-codegen ) ، وأنا لست مستعدًا لإزالة تلك التبعيات. لكنني لا أستورد الأشياء القديمة الموجودة في التعليمات البرمجية الخاصة بي ، لذلك لا أفهم سبب الخلط بين "كتابة نصوص" بخصوصها. أنا جديد تمامًا على تنك سكريبت ، ومع ذلك ، فمن المحتمل أن تكون هذه مشكلة "أنا" فقط. كل شيء يسير على ما يرام إذا قمت فقط بالإدلاء عبر as any ، على الرغم من أن الأمر يبدو سخيفًا:

export const client = new ApolloClient({
  cache: new InMemoryCache(),
  link: authenLink.concat(httpLink as any) as any
});
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات