我遇到与此github issue相同的问题。
在第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文件和auction_web应用程序的mix.exs文件中,然后在包含以下内容的两个目录中都添加了mix deps.get
mix.exs文件,尝试启动服务器时仍然出现相同的错误。
答案 0 :(得分:0)
啊!我在配置文件中输入了phoneix
(应为phoenix
)。
然后,我从两个mix.exs文件中删除了:jason依赖项,然后执行了mix deps.get
(重写锁定文件),然后执行了mix deps.clean jason
,并尝试启动服务器时,遇到相同的错误。
那么,我应该在哪个mix.exs文件中添加:jason依赖项?我将:jason依赖项添加到Auction_web mix.exs文件中,然后执行mix deps.get
,然后服务器启动。
答案 1 :(得分:0)
我认为您的后续回答表明您已解决问题,但是您将依赖项配置添加到auction_umbrella/config/config.exs
。
我将:jason依赖项添加到auction_web mix.exs文件中,然后混合deps.get,然后服务器启动。
这是否意味着现在一切都在为您工作?