0

Elixir 1.9 の私の関数は、外部 API からの json 応答をデコードし、次のようになります。

def decode({ok, body, "application/json"}) when is_binary(body) do
    body
    |> Poison.decode(keys: :atoms)
    |> case do
       {:ok, parsed} -> {ok, parsed}
       _ -> {:error, body}
     end 
end

開発中は非常にうまく機能しますが、次のエラー メッセージでアプリケーションがクラッシュします。

 ** (EXIT) an exception was raised:
    ** (UndefinedFunctionError) function Poison.decode/2 is undefined (module Poison is not available)

依存関係が含まれている私の mix.ex は次のとおりです。

defp deps do
 [
  # {:dep_from_hexpm, "~> 0.3.0"},
  # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
  { :credo, "~> 0.4", only: [:dev, :test] },
  { :httpoison, "~> 1.6" },
  { :plug_cowboy, "~> 2.0" },
  { :poison, "~> 3.1" },
  { :plug_logger_json, "~> 0.7.0" },
  { :stash, "~> 1.0.0" },
  {:edeliver, ">= 1.6.0"},
  {:distillery, "~> 2.0", warn_missing: false},
  ]
end

そして、これが私の製品ビルドをコンパイルした方法です:

 MIX_ENV=prod mix deps.clean --all 
 && MIX_ENV=prod mix deps.get 
 && MIX_ENV=prod mix clean 
 && MIX_ENV=prod mix compile 
 && MIX_ENV=prod mix release my_app

mix.exs アプリケーション/0

  def application do
    [
      applications: [:plug_logger_json, :httpoison, :edeliver],
      extra_applications: [:logger, :plug_cowboy],
      mod: {My.Application, []}
    ]
  end

あなたの助けは非常に高く評価されます。

4

0 に答える 0