我如何包含来自deps的模块并在elixir中使用它?

我如何包含来自deps的模块并在elixir中使用它?,elixir,Elixir,我想使用模块HTTPoison。我如何使用它 我的mix.exs文件: defmodule Api.MixProject do use Mix.Project def project do [ app: :api, version: "0.1.0", elixir: "~> 1.6", start_permanent: Mix.env() == :prod, deps: deps() ] end

我想使用模块
HTTPoison
。我如何使用它

我的
mix.exs
文件:

defmodule Api.MixProject do
  use Mix.Project

  def project do
    [
      app: :api,
      version: "0.1.0",
      elixir: "~> 1.6",
      start_permanent: Mix.env() == :prod,
      deps: deps()
    ]
  end

  def application do
    [
      application: [:httpoison]
    ]
  end

  defp deps do
    [
      {:httpoison, "~> 1.0"}
    ]
  end
end
我尝试将其导入模块中:

defmodule Api do
  use HTTPoison

  def hello do
    :hello
  end
end
…但它抛出了一个错误:

**(UndefinedFunctionError)函数HTTPoison.\uuuuu using\uuuu/1未定义或私有

有没有一种方法可以使其成为一个全局包,并将其导入到exs文件中,而不创建整个项目?

看看,您可能会发现它对创建自己的API很有用。例如:

defmodule Api do
  use HTTPoison.Base

  def hello do
    :hello
  end
end
看一下,您可能会发现它对创建自己的API很有用。例如:

defmodule Api do
  use HTTPoison.Base

  def hello do
    :hello
  end
end

如果不使用
import
use
,则只要将
httptoison
指定为deps(就像您所做的那样),那么
httptoison
似乎就可以工作。我试着用这个函数:

defmodule API do
    def start, do: HTTPoison.start |> IO.inspect
end
iex-S组合中

iex(3)> API.start
{:ok, []}
{:ok, []}
如@IgorDrozdov所述,如果您想在自己的API中封装
HTTPoison
的一些函数,可以将
use HTTPoison.Base


对于问题的最后一部分,请看@Dogbert,我找不到更好的解决方案:这是一个解决方案,没有现成的命令可以像ruby脚本中的require那样导入外部库。

没有
导入
使用
,似乎只要将
HTTPoison
指定为deps(就像您所做的那样),它就可以工作。我试着用这个函数:

defmodule API do
    def start, do: HTTPoison.start |> IO.inspect
end
iex-S组合中

iex(3)> API.start
{:ok, []}
{:ok, []}
如@IgorDrozdov所述,如果您想在自己的API中封装
HTTPoison
的一些函数,可以将
use HTTPoison.Base


对于问题的最后一部分,请看@Dogbert,我找不到更好的解决方案:这是一个解决方案,没有现成的命令允许您像ruby脚本中的require那样导入外部库。

模块名称区分大小写。尝试导入HTTPoison。模块名称区分大小写。试着导入HTTPoison。我认为在我的例子中是缺少
。Base
部分我认为在我的例子中是缺少
。Base
部分