h1d3r00t

h1d3r00t

I cannot import(alias) defstruct

I’m learning Pheonix via programming Pheonix > 1.4 book. The chapter 3 code cannot run.

defmodule Rumbl.Accounts.User do
  defstruct [:id, :name, :username]
end

defmodule Rumbl.Accounts do

  alias Rumbl.Accounts.User

  def list_users do
    [
      %User{id: "1", name: "jose", username: "josevalim"}
    ]
  end
end

Then run in iex. I faced this error.

** (CompileError) accounts.ex:7: Rumbl.Accounts.User.__struct__/1 is undefined, cannot expand struct Rumbl.Accounts.User. Make sure the struct name is correct. If the struct name exists and is correct 
but it still cannot be found, you likely have cyclic module usage in your code

What am I wrong?

Marked As Solved

Aetherus

Aetherus

Sorry for being late to reply. I’m in China so I was sleeping when you asked the question.

iex -S mix starts an iex session with all the .ex files in the elixirc paths compiled and loaded (including the .ex files in the dependencies of your project), all the “applications” of your project started, and all the supervision trees built. But, as for a phoenix project, iex -S mix does not start the web server.

mix phx.server also compiles all the .ex files, starts, all the applications, and builds all the supervision trees. It also starts the web server, but it does not start an iex session.

If you want both, you can try iex -S mix phx.server.

There is no iex -S your_module.ex. You can start an mix-aware iex session by iex -S mix, and in that session, do whatever you want with your modules. Or, you can type mix eval '<your code>'.

Also Liked

Aetherus

Aetherus

Maybe you should try iex -S mix instead of just iex.

Where Next?

Popular in Questions Top

skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a &gt; b) do {:ok, "a"} end if (a &lt; b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
lucidguppy
I have a super simple question about elixir - how would I take a file like this foo bar baz and output a new file that enumerates th...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29377 241
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New

We're in Beta

About us Mission Statement