2016-10-26 11 views
0

エリキシルプロジェクトにHTTPotionをインポートする方法:私はプロジェクト作成

$ mix new sample 

私はmix.exsファイルに編集:

defmodule Sample.Mixfile do 
    use Mix.Project 

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

    def application do 
    [applications: [:logger, :httpotion]] 
    end 

    defp deps do 
    [{:httpotion, "~> 3.0.2"}] 
    end 
end 

と私のsamplex.exファイル:

defmodule Sample do 
    IO.puts "Hello World" 
end 

Iを実行:

$ mix deps.get 
$ mix 

と私が得る:ここにすべて完璧なまで

Compiling 1 file (.ex) 
Hello World 
Generated sample app 

が、私はにsample.exを変更した場合:

defmodule Sample do 
    HTTPotion.get "httpbin.org/get" 
end 

私は次のエラーを取得する:

$ mix deps.get 
Running dependency resolution 
All dependencies up to date 
$ mix   
Compiling 1 file (.ex) 
warning: variable response is unused 
    lib/sample.ex:2 


== Compilation error on file lib/sample.ex == 
** (ArgumentError) argument error 
    (stdlib) :ets.lookup(:ibrowse_lb, {'httpbin.org', 80}) 
    /Users/xxx/sample/deps/ibrowse/src/ibrowse.erl:328: :ibrowse.send_req/6 
    lib/httpotion.ex:355: HTTPotion.request/3 
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6 

何が欠けている?私はエリキシルについての経験はない。

+0

「mix.exs」の 'applications'に':http: 'アプリケーション:[:logger、:httpotion]'を追加してみてください。 – Dogbert

+0

ありがとう@Dogbert私は質問を更新しましたが、エラーは同じです – ademar111190

答えて

1

私は提供された手順で問題を再現しました。 HTTPotion.get/2は、モジュール で直接呼び出されると例外が発生しますが、関数から呼び出された場合は正常に動作します。私はコンパイル時に呼び出された場合、それは例外を発生させると思うテスト

defmodule SampleTest do 
    use ExUnit.Case 

    test "response from HTTPotion" do 
    assert Sample.request 
    end 
end 

でチェック

defmodule Sample do 
    def request do 
    HTTPotion.get "httpbin.org/get" 
    end 
end 

関連する問題