apollo.watchQuery приводит к «ОШИБКА TypeError: Object (...) не является функцией» - PullRequest
0 голосов
/ 03 июня 2018

В настоящее время я работаю над некоторыми базовыми вещами с Angular (5) и GraphQL, и у меня возникают некоторые проблемы с вызовом вызова метода watchQuery.Как только я вызываю метод, мой компонент падает и возвращает меня со следующей ошибкой:

ERROR TypeError: Object(...) is not a function

Я искал в Интернете решение, но не смог найти подходящего.Моя среда содержит следующие библиотеки:

  • apollo-angular: ^ 1.1.0
  • apollo-angular-link-http: ^ 1.1.0
  • apollo-кэш-память: ^ 1.2.2
  • apollo-client: ^ 2.3.2
  • graphql: ^ 0.13.2
  • graphql-tag: ^ 2.9.2
  • rxjs: ^ 5.5.6

У меня есть общий модуль с некоторыми операциями импорта и ссылкой:

export class SharedModule {
  constructor(apollo: Apollo, httpLink: HttpLink) {
    apollo.create({
      link: httpLink.create({uri: 'baseUri/graphql'}),
      cache: new InMemoryCache()
    });
  }
}

И у меня есть следующий код в моем спискекомпонент:

getMovies() {
  this.movies = this.apollo.watchQuery<Query>({    // <= where my error occurs
    query: gql`
      query {
        movies {
          id
          title
          genres
        }
      }
    `
  })
    .valueChanges
    .pipe(map((result) => result.data.movies));
}

полная ошибка содержит следующие строки вплоть до моего кода:

ERROR TypeError: Object(...) is not a function
   at new QueryRef (QueryRef.js:6)
   at ApolloBase.watchQuery (Apollo.js:30)
   at MovieListComponent.getMovies (movie-list.component.ts:37)
   at MovieListComponent.ngOnInit (movie-list.component.ts:29)

Если у кого-то есть предложения или вопросы, пожалуйста, дайте мне знать.

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Если вы используете Angular 5, это, вероятно, связано с тем, что версии, на которые вы указали в своем вопросе, зависят от RxJS 6. У вас есть два решения:

  • Обновление до Angular 6 AND RxJS 6
  • Понизьте пакеты Apollo Angular до версий 1.0.1, которые зависят от RxJS 5

Не пытайтесь перейти на RxJS 6 и оставайтесь на Angular 5, вы будетестолкнуться с большим количеством проблем.

0 голосов
/ 22 сентября 2018

Проблема возникает из-за несоответствия между RxJS v5 и v6.

  • Apollo v1.1.0 и более поздняя поддержка Angular 6+ и RxJS 6 +
  • Apollo предыдущих версий 1.1.0 работаетна Angular 5 и RxJS 5.

Если вы столкнулись с проблемой, мы настоятельно рекомендуем перейти на RxJS 6. Мы выполнили несколько крупных проектов без каких-либо проблем.

Есливы не можете обновиться, а затем придерживаться версии 1.0.X apollo-angular.

0 голосов
/ 04 июня 2018

Вам следует попробовать понизить рейтинг grapqh и graphql-tag

...