При переходе с Angular 5 на Angular 6 я получил сообщение об ошибке TypeError: Вы указали недопустимый объект, где ожидался поток - PullRequest
0 голосов

Этот код работал нормально в Angular 5, но при переходе на Angular 6 я получил сообщение об ошибке:

ОШИБКА Ошибка: Uncaught (в обещании): TypeError: Вы указали неверный объект, где ожидался поток. Вы можете предоставить Observable, Обещание, Массив или Итерируемый. TypeError: Вы указали неверный объект, где ожидался поток. Вы можете предоставить Observable, Promise, Array или Iterable. at subscribeTo (subscribeTo.js: 41) в от (от .js: 17) в новом QueryRef (QueryRef.js: 6) в Apollo.push ../ node_modules / apollo-angular / Apollo.js.ApolloBase.watchQuery (Apollo.js: 29) at contacts.service.ts: 75

Вот код

Я был бы очень признателен за то, что может быть причиной этой ошибки.

1 Ответ

0 голосов
/ 09 мая 2018

Я просто столкнулся с той же ошибкой. Я исправил это, заменив мои значения watchQuery просто query.

Пример старого кода:

return this.apollo
  .watchQuery<GetPartnerCollectionsQuery>({
    query: getPartnerCollectionsQuery,
    variables,
  })
  .valueChanges.pipe(
    map(result => {
      return result.data.getPartnerCollections.collections;
    })
  );

Пример нового кода:

return this.apollo
  .query<GetPartnerCollectionsQuery>({
    query: getPartnerCollectionsQuery,
    variables,
  })
  .pipe(
    map(result => {
      return result.data.getPartnerCollections.collections;
    })
  );

Довольно странно, что watchQuery, похоже, больше не работает, поскольку кажется, что это «правильный» тип запроса, но, надеюсь, это всего лишь временная ошибка.

Редактировать: Просто отследил официальный билет на эту ошибку:

https://github.com/apollographql/apollo-angular/issues/545

Редактировать 2: : найдено официальное решение, обновите ваши пакеты до новых версий, исправляющих эту ошибку:

"apollo-angular": "^1.1.0-rc.0",
"apollo-angular-link-http": "^1.1.0-rc.0",
...