我如何包含来自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
部分