按照本教程,尝试使用 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
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
任何帮助调试它都会非常赞赏。
答案 0 :(得分:3)
所以我注意到了一些事情:
您在录制后已将上下文命名为。您应该在记录所属的想法之后命名您的上下文。像Authentication
或Account
在拥有Account
上下文的Phoenix 1.3应用程序中构建#1,您可能拥有与该上下文关联的用户记录。在这种情况下,您在lib / myapp / account / users.ex中定义了Myapp.Account.Users。这是你的结构来自的地方。
我认为你在这里结束的方式是,上下文的名称与你的记录相同,这会造成一些混乱。在Users
上下文的第9行,您要对Myapp.Users.User
进行别名,但该模块永远不会定义。