ошибка mix deps, когда 2 библиотеки имеют одинаковую зависимость и требуют разных версий - PullRequest
2 голосов
/ 09 марта 2019

У меня проблемы с разрешением зависимостей моего приложения Phoenix:

Мой файл mix.exs имеет:

{:phoenix, "~> 1.4.0"},
{:phoenix_pubsub, "~> 1.1"},
{:phoenix_ecto, "~> 4.0"},
{:ecto_sql, "~> 3.0"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.11"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:gettext, "~> 0.11"},
{:jason, "~> 1.0"},
{:plug_cowboy, "~> 2.0"},
{:redix, ">= 0.0.0"},
{:extwitter, "~> 0.9.3"},      
{:timex, "~> 3.0"},
{:corsica, "~> 1.0"},
{:cachex, "~> 3.1"},
{:bamboo, "~> 1.1"},
{:bamboo_ses, "~> 0.1.0"},
{:comeonin, "~> 4.1"},
{:bcrypt_elixir, "~> 1.1"},
{:ex_machina, "~> 2.2", only: :test}

I then added this stripe library:

 {:stripity_stripe, "~> 2.0.0"},

Теперь, когда я выполняю deps.get, я вижу эту ошибку:

Не удалось использовать "хакни" (версии 1.13.0 - 1.15.1), потому что для бамбука (версии 1.1.0 и 1.2.0) требуется> = 1.13.0 stripity_stripe (версии 2.0.0 и 2.0.1) требуется ~> 1.12.1

** (Mix) Не удалось разрешить шестнадцатеричное зависимость, измените требования к версии ваших зависимостей или разблокируйте их (с помощью mix deps.update или mix deps.unlock).Если вы не можете разрешить конфликты, попробуйте переопределить с помощью {: dependency, "~> 1.0", override: true}

Я уже сделал это:

mix clean
rm mix.lock
mix deps.get

Как я могу использовать эти опции переопределения?Как это будет работать, если двум библиотекам нужны разные версии общей зависимости?

Ответы [ 2 ]

3 голосов
/ 10 марта 2019

Я нашел похожий вопрос на форуме эликсира .Соответствующие цитаты:

Нельзя одновременно запускать несколько версий одного и того же приложения

и

Один модульможет существовать только в одной версии на виртуальной машине.Так что это дает ограничения на структуру приложения.По сути, это означает, что все должны согласовать одну версию.

Кроме того, документы для :override состояния:

, если установлено значение true зависимость будет переопределять любые другие определения самой себя другими зависимостями

Это не похоже на то, что вы хотите, потому что вы просто заставите stripity_stripe 2.0.0 использовать версию, отличную отон ожидает.

Похоже, вам нужно найти версию stripity_stripe, которая зависит от версий hackney, которые также поддерживаются :bamboo, "~> 1.1".

Итак,

{:bamboo, "~> 1.1"},
{:stripity_stripe, "~> 2.2.2"}

выглядит хорошо.Я проверял это с mix deps.get, и это было нормально.

0 голосов
/ 10 марта 2019

В вашем сценарии, если возможно, вы можете использовать

{:stripity_stripe, "~> 2.2.2"}

Или вы можете добавить хакни в качестве зависимости и применить override: true.

{:hackney, "~> 1.13", override: true}

Надеюсь, что поможет

...