2017-06-06 80 views
8

Próba zbudować przy użyciu API Phoenix v1.3 po tym artykule:
https://dreamconception.com/tech/phoenix-full-fledged-api-in-five-minutes
(zadbał, aby śledzić każdy krok do listu)Phoenix 1,3 (eliksir) Błąd: Myapp.Users.User .__ struktura __/0 jest niezdefiniowany, nie może się rozszerzać struktura Myapp.Users.User

Gdy próbuję uruchomić mix ecto.setup

pojawia się następujący błąd: error

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 jest dość duży: https://github.com/nelsonic/phoenix-api-example/blob/master/lib/myapp/users/users.ex#L65

Kompletny kod na GitHub: https://github.com/nelsonic/phoenix-api-example

Każda pomoc debugowania go byłoby znacznie doceniane.

+1

Nie wydaje się, że masz moduł 'MyApp.Users.User'. –

+2

Czy te pliki pod 'web /' nie powinny znajdować się w 'lib /' w Phoenix 1.3? Widzę 'defmodule Myapp.Users.User' w' web/models/coherence/user.ex'. – Dogbert

+0

@ Dogbert dobrze zauważył, myślę, że 'Coherence' to _assuming_ to aplikacja V1.2 ... – nelsonic

Odpowiedz

3

więc istnieje kilka rzeczy, które mi zauważając:

  1. pan nazwanych context po rekordzie. Powinieneś nazwać kontekst po pomyśle, którego częścią są zapisy. Coś jak Authentication lub Account

  2. Building off # 1, w Phoenix 1.3 aplikacji, gdzie trzeba kontekst Account, możesz mieć rekordy użytkownika powiązane z tym kontekście. W takim przypadku musisz zdefiniować Myapp.Account.Users w lib/myapp/account/users.ex. To jest miejsce, z którego twoja struktura pochodziłaby.

  3. Wydaje mi się, że tutaj trafiłeś, że kontekst nazywa się tak samo jak twoje zapisy i to powoduje pewne zamieszanie. W linii 9 kontekstu Users wygaszacie Państwo Myapp.Users.User, ale ten moduł nigdy nie jest zdefiniowany.