![](/img/trans.png)
[英]How do I load an Elixir library into iex without adding it to a project's mix.exs deps?
[英]How do I include module from deps and use it in 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
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
文件而不创建整个项目?
看看GitHub文档 ,您可能会发现它对于创建自己的API很有用。 例如:
defmodule Api do
use HTTPoison.Base
def hello do
:hello
end
end
如果没有import
或use
,那么只要您将HTTPpoison
指定为dep(就像您所做的那样), HTTPoison
似乎就HTTPoison
工作。 我尝试了此功能:
defmodule API do
def start, do: HTTPoison.start |> IO.inspect
end
在iex -S mix
:
iex(3)> API.start
{:ok, []}
{:ok, []}
如果您想将HTTPoison
某些功能HTTPoison
在自己的API中,可以use HTTPoison.Base
,如@IgorDrozdov所述。
对于您问题的最后一部分,请看@Dogbert给出的答案 ,我找不到更好的解决方案:这是一种解决方法, 没有现成的命令可让您像require一样导入外部库例如在ruby脚本中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.