我想使用模块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 .__ using __ / 1是未定义或私有的
是否有一种方法可以使它成为全局软件包,并将其导入到exs
文件中而无需创建整个项目?
答案 0 :(得分:3)
看看GitHub docs,您可能会发现它对于创建自己的API很有用。例如:
defmodule Api do
use HTTPoison.Base
def hello do
:hello
end
end
答案 1 :(得分:2)
在没有import
或use
的情况下,只要您将HTTPoison
指定为部门,HTTPpoison
就可以正常工作(就像您所做的那样)。我尝试过使用此功能:
defmodule API do
def start, do: HTTPoison.start |> IO.inspect
end
在iex -S mix
中:
iex(3)> API.start
{:ok, []}
{:ok, []}
如果您想将use HTTPoison.Base
的某些功能包装在自己的API中,可以使用HTTPoison
,如@IgorDrozdov所述。
对于您问题的最后一部分,请看@Dogbert的this answer,我找不到更好的解决方案:这是一种解决方法,没有现成的命令可以解决允许您导入外部库,例如在ruby脚本中需要require。