凤凰1.3(Elixir)错误:Myapp.Users.User .__ struct __/0未定义,无法扩展struct Myapp.Users.User

nel*_*nic 8 elixir data-structures phoenix-framework

在本教程之后尝试使用Phoenix v1.3构建API :
https ://dreamconception.com/tech/phoenix-full-fledged-api-in-five-minutes
(确保按照每一步操作)

当我试图跑 mix ecto.setup

我收到以下错误: 错误

Compiling 17 files (.ex)

== Compilation error on file lib/myapp/users/users.ex ==
** (CompileError) lib/myapp/users/users.ex:65: Myapp.Users.User.__struct__/0 is undefined, cannot expand struct Myapp.Users.User
    (stdlib) lists.erl:1354: :lists.mapfoldl/3
    lib/myapp/users/users.ex:65: (module)
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:117: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1
Run Code Online (Sandbox Code Playgroud)

lib/myapp/users/users.ex是非常大的:https://github.com/nelsonic/phoenix-api-example/blob/master/lib/myapp/users/users.ex#L65

GitHub上的完整代码:https://github.com/nelsonic/phoenix-api-example

任何帮助调试它将非常感激.

Tyl*_*ham 3

所以我注意到了一些事情:

  1. 您已根据您的记录命名了您的上下文。您应该根据记录所属的想法来命名您的上下文。类似AuthenticationAccount

  2. 在 #1 的基础上,在具有Account上下文的 Phoenix 1.3 应用程序中,您可能拥有与该上下文关联的用户记录。在这种情况下,您将在 lib/myapp/account/users.ex 中定义 Myapp.Account.Users。这就是你的结构的来源。

  3. 我认为您最终到达这里的原因是上下文的名称与您的记录相同,这导致了一些混乱。在Users上下文的第 9 行,您使用了别名Myapp.Users.User,但该模块从未定义。