2017-06-06 16 views
8

Đang cố gắng để xây dựng một API sử dụng Phoenix v1.3 làm theo hướng dẫn này:
https://dreamconception.com/tech/phoenix-full-fledged-api-in-five-minutes
(làm chắc chắn làm theo từng bước để thư)Phoenix 1.3 (Elixir) Lỗi: Myapp.Users.User .__ struct __/0 là undefined, không thể mở rộng struct Myapp.Users.User

Khi tôi cố gắng để chạy mix ecto.setup

tôi nhận được lỗi sau: 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 

Các lib/myapp/users/users.ex là khá lớn: https://github.com/nelsonic/phoenix-api-example/blob/master/lib/myapp/users/users.ex#L65

mã hoàn chỉnh trên GitHub: https://github.com/nelsonic/phoenix-api-example

Bất kỳ trợ giúp gỡ rối nó sẽ là nhiều đánh giá cao.

+1

Bạn dường như không có mô-đun 'MyApp.Users.User'. –

+2

Các tệp đó có phải nằm trong 'web /' trong 'lib /' trong Phoenix 1.3 không? Tôi có thể thấy 'defmodule Myapp.Users.User' trong' web/models/coherence/user.ex'. – Dogbert

+0

@ Dogbert cũng phát hiện ra, tôi nghĩ rằng 'Coherence' là _assuming_ nó là một ứng dụng V1.2 ... – nelsonic

Trả lời

3

Vì vậy, có một vài điều mà tôi nhận thấy:

  1. Bạn đã đặt tên ngữ cảnh của bạn sau khi hồ sơ của bạn. Bạn nên đặt tên cho bối cảnh của mình sau ý tưởng rằng các bản ghi là một phần của. Một cái gì đó như Authentication hoặc Account

  2. Tắt số 1, trong ứng dụng Phoenix 1.3 nơi bạn có ngữ cảnh Account, bạn có thể có hồ sơ người dùng được liên kết với ngữ cảnh đó. Trong trường hợp đó bạn sẽ có Myapp.Account.Users được định nghĩa trong lib/myapp/account/users.ex. Đây là nơi mà cấu trúc của bạn sẽ đến từ.

  3. Tôi nghĩ bạn đã kết thúc ở đây như thế nào, ngữ cảnh được đặt tên giống như hồ sơ của bạn và điều đó gây ra một số nhầm lẫn. Trên dòng 9 trong số Users ngữ cảnh bạn đang tạo bí danh Myapp.Users.User nhưng mô-đun đó không bao giờ được xác định.

Các vấn đề liên quan