Dependencies errors

Hi all

I’ve got following dependencies errors:

Unchecked dependencies for environment test:
* gettext (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* poolboy (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* poison (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* comeonin (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* bypass (Hex package)
  the dependency bypass in mix.exs is overriding a child dependency:

  > In mix.exs:
    {:bypass, "~> 0.6.0", [env: :prod, hex: :bypass, only: :test]}

  > In /home/anujit/elixir/weight_protocol/apps/sap_odata_service/mix.exs:
    {:bypass, [env: :prod, git: "https://github.com/PSPDFKit-labs/bypass.git", only: :test]}

  Ensure they match or specify one of the above in your deps and set "override: true"
* cowboy (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* phoenix_html (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* httpotion (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* phoenix_pubsub (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
* phoenix (Hex package)
  the dependency is not locked (run "mix deps.get" to generate "mix.lock" file)
** (Mix) Can't continue due to errors on dependencies

What am I doing wrong?

Thanks

2 Likes

did you do what the error messages above suggest?

1 Like

Yes I run:

mix deps.get
Running dependency resolution...
1 Like

I meant this part.

1 Like

What does it mean? Here are my deps:

  defp deps do
    [{:phoenix, "~> 1.2.1"},
     {:phoenix_pubsub, "~> 1.0"},
     {:phoenix_html, "~> 2.9"},
     {:phoenix_live_reload, "~> 1.0", only: :dev},
     {:gettext, "~> 0.11"},
     {:poison, "~> 3.0", override: true},
     {:cowboy, "~> 1.0"},
     {:bypass, "~> 0.6.0", only: :test},
     {:sap_odata_service, in_umbrella: true}
     ]
  end
1 Like

Check out a mix.exs file in your “soap_odata_service” umbrella app. It is here:

/home/anujit/elixir/weight_protocol/apps/sap_odata_service/mix.exs

there is an entry for bypass that points to git repo, while one of dependencies points to a version of package from hex.pm.

You need to decide which one to use, and add “override: true” to the line.

1 Like

It works :slight_smile: Thanks so much.
What does override: true mean?

2 Likes

Google “elixir hex mix override true” as an exercise in Google-Fu and let me know if it still needs clarifications. If so, I’ll explain.

1 Like

I read the doc

https://hexdocs.pm/mix/Mix.Tasks.Deps.html

It is not clear for me.
Thanks

2 Likes

When you specify “override: true”, the resolution dependency done by mix will force the use of version that you specify in mix.exs file. It will ignore versions required by other dependencies in case the conflict is detected.

This obviously mean you should use this with caution. Using override: true it is perfectly possible to force a dependency that is incompatible with one of the other libraries. The result may be that your project won’t compile anymore, or - worse - that it will but something will malfunction because you forced incompatible library version.

4 Likes

Awesome thanks so much.

1 Like