Добавление graphql_client в качестве зависимости при написании подключаемого модуля маршрутизатора приводит к разрыву транзитивной зависимости.

Я новичок в ржавчине, поэтому простите меня, если это вопрос пробела в знаниях, но его трудно найти в Google. Я настраиваю этот , чтобы помочь мне передавать данные авторизации между каждым подграфом. У меня есть подграф авторизации для сбора данных, поэтому маршрутизатор должен будет сделать запрос graphql к подграфу авторизации, а затем передать его. я выбрал graphql_clientзависимость, потому что это та же самая, которую использует маршрутизатор apollo, и, похоже, она имеет большую поддержку по сравнению с другими клиентами rust graphql, однако, когда я добавляю эту зависимость, она ломает другую зависимость. Это шаги

  1. настроить пример проекта контекста -> проектhttps://github.com/apollographql/router/tree/v0.1.0-preview.6/examples/context
  2. добавьте их как зависимость в Cargo.toml
      graphql_client = { version = "0.10.0", features = ["reqwest-blocking"]}
reqwest = { version = "0.11.10", features = ["blocking"]}
  1. запускать грузовую сборку
  2. См. ошибку

Ошибка

      Compiling launchpad v0.1.0 (https://github.com/apollographql/rover.git?rev=94141242ba34cf00cde9630fc4a6dcd05d4fa5da#94141242)
error[E0433]: failed to resolve: use of undeclared type `HeaderMap`
  --> /Users/macuser/.cargo/git/checkouts/rover-efd9f422be37a06b/9414124/crates/launchpad/src/introspect/runner.rs:30:26
   |
30 |     let mut header_map = HeaderMap::new();
   |                          ^^^^^^^^^ not found in this scope
   |
help: consider importing this struct
   |
1  | use reqwest::header::HeaderMap;
   |

error[E0433]: failed to resolve: use of undeclared type `HeaderName`
  --> /Users/macuser/.cargo/git/checkouts/rover-efd9f422be37a06b/9414124/crates/launchpad/src/introspect/runner.rs:33:13
   |
33 |             HeaderName::from_bytes(header_key.as_bytes())?,
   |             ^^^^^^^^^^ not found in this scope
   |
help: consider importing this struct
   |
1  | use reqwest::header::HeaderName;
   |

error[E0433]: failed to resolve: use of undeclared type `HeaderValue`
  --> /Users/macuser/.cargo/git/checkouts/rover-efd9f422be37a06b/9414124/crates/launchpad/src/introspect/runner.rs:34:13
   |
34 |             HeaderValue::from_str(&header_value)?,
   |             ^^^^^^^^^^^ not found in this scope
   |
help: consider importing this struct
   |
1  | use reqwest::header::HeaderValue;
   |

error[E0659]: `reqwest` is ambiguous
 --> /Users/macuser/.cargo/git/checkouts/rover-efd9f422be37a06b/9414124/crates/launchpad/src/introspect/runner.rs:6:5
  |
6 | use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
  |     ^^^^^^^ ambiguous name
  |
  = note: ambiguous because of multiple potential import sources
  = note: `reqwest` could refer to a crate passed with `--extern`
  = help: use `::reqwest` to refer to this crate unambiguously
note: `reqwest` could also refer to the module imported here
 --> /Users/macuser/.cargo/git/checkouts/rover-efd9f422be37a06b/9414124/crates/launchpad/src/introspect/runner.rs:5:5
  |
5 | use graphql_client::*;
  |     ^^^^^^^^^^^^^^^^^
  = help: use `self::reqwest` to refer to this module unambiguously

Some errors have detailed explanations: E0433, E0659.
For more information about an error, try `rustc --explain E0433`.
error: could not compile `launchpad` due to 4 previous errors

Дерево зависимостей: маршрутизатор apollo -> восходящий канал -> ровер (ветвь = geal/launchpad)

2 ответа

Вам нужно настроить свой подграф, чтобы получить его.

Я разместил эту же проблему в репозитории apollo/router, и они сказали, что это скоро будет исправлено.

https://github.com/apollographql/router/issues/937#issuecomment-1114995491

Другие вопросы по тегам