我正在尝试使用带有mongodb的菲尼克斯框架作为数据库,所以我运行下面的命令来开始
mix phoenix.new helloworld --database mongodb我的mix.exs文件如下所示:
defp deps do
[{:phoenix, "~> 1.2.1"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:mongodb_ecto, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"}]
end但是,当我运行mix deps.get时,我会得到以下错误:
Failed to use "ecto" (versions 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.1.4) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (version 3.0.1) requires ~> 2.0
Failed to use "ecto" (versions 2.0.0-beta.0 to 2.0.6) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (version 3.0.0) requires ~> 2.0.0-rc
Failed to use "ecto" (version 2.0.6) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (version 3.0.0) requires ~> 2.0.0-rc
Failed to use "ecto" (versions 2.1.0 to 2.1.4) because
mongodb_ecto (versions 0.1.0 to 0.1.2) requires ~> 1.0
phoenix_ecto (versions 3.1.0 to 3.2.3) requires ~> 2.1
Failed to use "ecto" (version 2.1.4) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (version 3.0.1) requires ~> 2.0
Failed to use "ecto" (version 2.1.4) because
mongodb_ecto (versions 0.1.3 to 0.1.5) requires ~> 1.0.0
phoenix_ecto (versions 3.1.0 to 3.2.3) requires ~> 2.1
** (Mix) Hex dependency resolution failed, relax the version requirements of your dependencies or unlock them (by using mix deps.update or mix deps.unlock). If you are unable to resolve the conflicts you can try overriding with {:dependency, "~> 1.0", override: true}我该怎么开始?
发布于 2017-03-20 06:05:46
这里的问题是mongodb_ecto已经很久没有更新了,因此不支持Ecto的更新版本(v2.0和更高版本),这正是菲尼克斯目前正在使用的版本。这会导致mix deps.get失败,因为它无法解决依赖关系。
这里的一种解决方案是直接使用MongoDB driver for Elixir而不是mongodb_ecto,并将其配置为在菲尼克斯应用程序中使用Ecto。以下是一篇解释如何做到这一点的博客文章:
还有一个库提供了MongoDB对Ecto 2的支持,但它仍然被列为项目的github存储库中的beta。您可以自己检查它是否符合您的使用标准:
https://stackoverflow.com/questions/42896009
复制相似问题