我試圖用HTTPoison編寫一個網頁抓取工具。作爲第一步,我沿着下面的步驟寫了一個簡短的HTTP訪問代碼;Elixir:如何正確描述mix.exs設置?
通過混合
創建一個項目$混用新httptest1
撰寫的lib/httptest1.ex短代碼。
defmodule Httptest1 do require HTTPoison def test1 do ret = HTTPoison.get! "http://www.yahoo.com" %HTTPoison.Response{status_code: 200, body: body} = ret IO.inspect body end end Httptest1.test1()
修改mix.exs爲HTTPoison。
defmodule Httptest1.Mixfile do use Mix.Project def project do [app: :httptest1, version: "0.0.1", elixir: "~> 1.0", build_embedded: Mix.env == :prod, start_permanent: Mix.env == :prod, deps: deps] end # Configuration for the OTP application def application do [applications: [:logger, :httpoison]] end # Dependencies can be Hex packages: # defp deps do [ {:httpoison, "~> 0.6"} ] end end
運行
$ mix deps.get
的依賴關係。運行
$ mix run
,則編譯失敗;==> idna (compile) Compiled src/idna.erl Compiled src/idna_ucs.erl Compiled src/punycode.erl (... snip ...) Generated httpoison app == Compilation error on file lib/httptest1.ex == ** (exit) exited in: :gen_server.call(:hackney_manager, {:new_request, #PID<0.154.0>, #Reference<0.0.1.1724>, {:client, :undefined, :hackney_dummy_metrics, :hackney_tcp_transport, 'www.yahoo.com', 80, "www.yahoo.com", [connect_timeout: 5000, recv_timeout: :infinity], nil, nil, nil, true, :hackney_pool, :infinity, false, 5, false, 5, nil, nil, nil, :undefined, :start, nil, :normal, false, false, false, false, nil, :waiting, nil, 4096, "", [], :undefined, nil, nil, nil, nil, :undefined, nil}}, :infinity) ** (EXIT) no process (stdlib) gen_server.erl:212: :gen_server.call/3 src/hackney_client/hackney_manager.erl:66: :hackney_manager.init_request/1 src/hackney_client/hackney_manager.erl:56: :hackney_manager.new_request/1 src/hackney_connect/hackney_connect.erl:181: :hackney_connect.socket_from_pool/4 src/hackney_connect/hackney_connect.erl:36: :hackney_connect.connect/5 src/hackney_client/hackney.erl:319: :hackney.request/5 lib/httpoison.ex:60: HTTPoison.request/5 lib/httpoison.ex:60: HTTPoison.request!/5
當我使用$ iex -S mix
代替,其結果是一樣的。
但是,如果我將httptest1.ex移動到放置mix.exs的相同目錄中,如$ mv lib/httptest1.ex .
,並試圖明確指定源文件;它工作正常。
問題: 我懷疑我的mix.exs設置出了問題,那是什麼?
我有類似的錯誤信息。該代碼在IEX中正確執行且沒有錯誤,但在運行混合任務時會引發錯誤。爲我工作的解決方案是「HTTPoison.start」也許這有助於在另一種情況下出現類似錯誤消息的人。 –