繁体   English   中英

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

[英]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

如果没有importuse ,那么只要您将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM