【发布时间】:2020-08-30 04:49:49
【问题描述】:
我是 Elixir 和 Phoenix 的新手,所以这个问题可能相当简单。我的 Phoenix 应用程序是一个 API 客户端,我正在尝试创建一个结构来对我将从 REST 端点接收的数据进行建模。我基本上是按照Poison GitHub页面上的小例子来创建我的模块:
defmodule ElixirServer.CurrentlyReprModule do
@derive [Poison.Encoder]
defstruct [:id, :time, :summary, :icon, :nearestStormDistance,
:nearestStormBearing, :precipIntensity, :precipProbability, :temperature,
:apparentTemperature, :dewPoint, :humidity, :pressure, :windSpeed, :windGust,
:windBearing, :cloudCover, :uvIndex, :visibility, :ozone]
end
该模块位于lib/elixir_server/ 下(这甚至是此类文件的最佳位置吗?)。
我的问题是当我尝试编译文件时出现此错误:
(CompileError) lib/elixir_server/currently_repr_module.ex:2: module Poison.Encoder is not loaded and could not be found
当我尝试运行 iex -S mix 时,我收到了类似的错误:
(UndefinedFunctionError) function Poison.Encoder.__using__/1 is undefined or private
Poison 包含在 mix.exs 的依赖项中。如何解决此错误?
【问题讨论】:
-
您是否事先运行了 mix deps.get 来获取依赖项?
-
是的,我已经运行了 mix deps.get。所有依赖项都是最新的,所以 Poison 就在那里。
-
/_build/dev/lib下可以看到poison目录吗?您可以尝试再次删除整个_build和mix deps.get -
是的,
poison目录在/_build/dev/lib下 -
如果我尝试改用
Jason库,我会在尝试使用模块的控制器中收到不同的错误:CurrentlyReprModule.__struct__/1 is undefined, cannot expand struct CurrentlyReprModule
标签: elixir phoenix-framework elixir-poison