0
我在傘應用程序中有兩個應用程序:cap和ed。Elixir如何讓傘應用程序中的應用程序進行通信
我可以成功地調用中的第一個功能,如果我用IEX:
c:\code\a_umbrella_app\apps\cap>iex -S mix
...
iex(1)>Cap.Handler.get_price()
"128.462"
但是當我嘗試從我的其他應用程序調用它,它給出了一個錯誤。
c:\code\a_umbrella_app\apps\ed>iex -S mix
...
iex(1)> Ed.Usecap.abc(:price)
** (UndefinedFunctionError) function :unicode_util.lowercase/1 is undefined (module :unicode_util is not available)
:unicode_util.lowercase('api.coinmarketcap.com')
(idna) c:/code/a_umbrella_app/apps/ed/deps/idna/src/idna.erl:57: :idn
a.lowercase_list/1
(idna) c:/code/a_umbrella_app/apps/ed/deps/idna/src/idna.erl:10: :idn
a.to_ascii/1
(hackney) c:/code/a_umbrella_app/apps/ed/deps/hackney/src/hackney_url.er
l:96: :hackney_url.normalize/2
(hackney) c:/code/a_umbrella_app/apps/ed/deps/hackney/src/hackney.erl:30
6: :hackney.request/5
(httpoison) lib/httpoison/base.ex:432: HTTPoison.Base.request/9
(cap) lib/cap/handler.ex:6: Cap.Handler.get_price/0
(ed) lib/ed/usecap.ex:7: Ed.Usecap.abc/1
這裏是從我的編輯應用程序的代碼:
defmodule Ed.Usecap do
require Cap.Handler
def abc(:price) do
Cap.Handler.get_price()
end
end
和它的DEPS,我甚至在這裏補充說帽需求DEPS:
defp deps do
[{:cap, in_umbrella: true},{:httpoison, "~> 0.11.2"},{:poison, "~> 3.0"}]
end
我在做什麼錯?我應該能夠從傘應用程序中的另一個應用程序調用一個應用程序中的功能嗎?
你在Erlang 20嗎? 'Ericode_util'被添加到Erlang 20中,它只有一個RC1版本。 – Dogbert
你可以嘗試刪除並重新獲取依賴關係嗎?我想不出任何理由,爲什麼它會在一個傘形應用程序中運行,而不是在任何情況下運行。由於您可以從'ed'訪問'cap'中定義的模塊,因此代碼正確。 – Dogbert
我認爲我的版本19有效。也許我需要更新它 –