Феникс в действии (финальное издание): ошибка Джейсона - PullRequest
0 голосов
/ 07 мая 2019

У меня та же проблема, что и у этой проблемы с github .

На стр.110, окончательная версия Phoenix in Action 1.4 говорит:

Вам нужно сделать еще одну вещь, прежде чем вы сможете запустить сервер.Phoenix требует, чтобы вы сообщили, какую библиотеку вы хотите использовать при обработке данных в формате JSON.Библиотека по умолчанию, которую использует Phoenix, называется Jason, и это то, что вы также будете использовать.На верхнем уровне вашего зонтичного приложения вам нужно настроить зависимость Phoenix для использования Jason.В auction_umbrella/config/config.exs добавьте последнюю строку в следующий список:

use Mix.Config
import_config "../apps/*/config/config.exs"
config :phoenix, :json_library, Jason

Я так и сделал, но когда я перехожу в каталог apps/auction_web и пытаюсь запустить сервер:

$ iex -S mix phx.server

Я получаю сообщение об ошибке:

Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

warning: failed to load Jason for Phoenix JSON encoding
(module Jason is not available).

Ensure Jason exists in your deps in mix.exs,
and you have configured Phoenix to use it for JSON encoding by
verifying the following exists in your config/config.exs:

    config :phoenix, :json_library, Jason


  (phoenix) lib/phoenix.ex:40: Phoenix.start/2
  (kernel) application_master.erl:273: :application_master.start_it_old/4

Compiling 11 files (.ex)

== Compilation error in file lib/auction_web/endpoint.ex ==
** (ArgumentError) invalid :json_decoder option. The module Poison is not loaded and could not be found
    (plug) lib/plug/parsers/json.ex:54: Plug.Parsers.JSON.validate_decoder!/1
    (plug) lib/plug/parsers/json.ex:32: Plug.Parsers.JSON.init/1
    (plug) lib/plug/parsers.ex:245: anonymous fn/3 in Plug.Parsers.convert_parsers/2
    (elixir) lib/enum.ex:1899: Enum."-reduce/3-lists^foldl/2-0-"/3
    (plug) lib/plug/parsers.ex:228: Plug.Parsers.convert_parsers/2
    (plug) lib/plug/parsers.ex:224: Plug.Parsers.init/1
    (plug) lib/plug/builder.ex:302: Plug.Builder.init_module_plug/4
    (plug) lib/plug/builder.ex:286: anonymous fn/5 in Plug.Builder.compile/3
~/phoenix_apps/auction_umbrella/apps/auction_web$ 

Другая информация:

$ mix phx.new --version
Phoenix v1.4.0

Затем я попытался добавить зависимость jason в оба файла mix.exs дляприложение зонтика, а также файл mix.exs для приложения auction_web, затем я сделал mix deps.get в обоих каталогах, содержащих файл mix.exs, и при попытке запустить сервер я все еще получаю ту же ошибку.

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Я думаю, что вы ответили на следующие вопросы: вы поняли это, но вы добавили конфигурацию зависимостей в auction_umbrella/config/config.exs.

Я добавил зависимость: jason в файл auction_web mix.exs, затем сделал mix deps.get, затем сервер запустился.

Означает ли это, что все работаетдля тебя сейчас?

0 голосов
/ 07 мая 2019

Aargh! Я неправильно набрал phoneix (должно быть phoenix) в файле конфигурации.

Затем я удалил зависимости: jason из обоих файлов mix.exs, затем сделал mix deps.get (перезаписать файлы блокировки), затем mix deps.clean jason, и при попытке запустить сервер я получил ту же ошибку .

Итак, к какому файлу mix.exs я должен добавить зависимость: jason? Я добавил зависимость: jason в файл auction_web mix.exs, затем сделал mix deps.get, затем сервер запустился.

...