ITM007
Phoenix Gen Auth Error on NixOS
Phoenix 1.7
I am new to elixir and am working through the Elixir Phoenix Docs, while following this https://hexdocs.pm/phoenix/mix_phx_gen_auth.html. But I am getting an error when running the tests once the auth is generated. This is done with postgres, I get the same error when using sqlite.
Steps to reproduce:
- Create new phx project
- Install dependencies and create database
- mix test (5 or 5 test pass)
- mix phx.gen.auth Accounts User users
- mix deps.get
- mix ecto.setup
- mix test (30 tests fail of 128)
Error:
29) test update email form renders errors with invalid data (phx-change) (MyprojectWeb.UserSettingsLiveTest)
test/myproject_web/live/user_settings_live_test.exs:52
** (KeyError) key :name not found in: %{
__changed__: nil,
__given__: %{
__changed__: nil,
field: %Phoenix.HTML.FormField{
id: "user_email",
name: "user[email]",
errors: [],
field: :email,
form: %Phoenix.HTML.Form{
source: #Ecto.Changeset<
action: nil,
changes: %{},
errors: [email: {"did not change", []}],
data: #Myproject.Accounts.User<>,
valid?: false
>,
impl: Phoenix.HTML.FormData.Ecto.Changeset,
id: "user",
name: "user",
data: #Myproject.Accounts.User<
__meta__: #Ecto.Schema.Metadata<:loaded, "users">,
id: 58,
email: "user-576460752303416959@example.com",
confirmed_at: nil,
inserted_at: ~N[2024-05-05 18:24:05],
updated_at: ~N[2024-05-05 18:24:05],
...
>,
hidden: [id: 58],
params: %{},
errors: [],
options: [method: "put"],
index: nil,
action: nil
},
value: "user-576460752303416959@example.com"
},
label: "Email",
type: "email"
},
field: %Phoenix.HTML.FormField{
id: "user_email",
name: "user[email]",
errors: [],
field: :email,
form: %Phoenix.HTML.Form{
source: #Ecto.Changeset<
action: nil,
changes: %{},
errors: [email: {"did not change", []}],
data: #Myproject.Accounts.User<>,
valid?: false
>,
impl: Phoenix.HTML.FormData.Ecto.Changeset,
id: "user",
name: "user",
data: #Myproject.Accounts.User<
__meta__: #Ecto.Schema.Metadata<:loaded, "users">,
id: 58,
email: "user-576460752303416959@example.com",
confirmed_at: nil,
inserted_at: ~N[2024-05-05 18:24:05],
updated_at: ~N[2024-05-05 18:24:05],
...
>,
hidden: [id: 58],
params: %{},
errors: [],
options: [method: "put"],
index: nil,
action: nil
},
value: "user-576460752303416959@example.com"
},
inner_block: [],
label: "Email",
multiple: false,
prompt: nil,
rest: %{required: true},
type: "email"
}
stacktrace:
(myproject 0.1.0) lib/myproject_web/components/core_components.ex:350: anonymous fn/2 in MyprojectWeb.CoreComponents."input (overridable 1)"/1
(myproject 0.1.0) /home/itm/Code/myproject/lib/myproject_web/live/user_settings_live.ex:21: MyprojectWeb.UserSettingsLive.render/1
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
30) test update email form renders errors with invalid data (phx-submit) (MyprojectWeb.UserSettingsLiveTest)
test/myproject_web/live/user_settings_live_test.exs:68
** (KeyError) key :name not found in: %{
__changed__: nil,
__given__: %{
__changed__: nil,
field: %Phoenix.HTML.FormField{
id: "user_email",
name: "user[email]",
errors: [],
field: :email,
form: %Phoenix.HTML.Form{
source: #Ecto.Changeset<
action: nil,
changes: %{},
errors: [email: {"did not change", []}],
data: #Myproject.Accounts.User<>,
valid?: false
>,
impl: Phoenix.HTML.FormData.Ecto.Changeset,
id: "user",
name: "user",
data: #Myproject.Accounts.User<
__meta__: #Ecto.Schema.Metadata<:loaded, "users">,
id: 59,
email: "user-576460752303418878@example.com",
confirmed_at: nil,
inserted_at: ~N[2024-05-05 18:24:05],
updated_at: ~N[2024-05-05 18:24:05],
...
>,
hidden: [id: 59],
params: %{},
errors: [],
options: [method: "put"],
index: nil,
action: nil
},
value: "user-576460752303418878@example.com"
},
label: "Email",
type: "email"
},
field: %Phoenix.HTML.FormField{
id: "user_email",
name: "user[email]",
errors: [],
field: :email,
form: %Phoenix.HTML.Form{
source: #Ecto.Changeset<
action: nil,
changes: %{},
errors: [email: {"did not change", []}],
data: #Myproject.Accounts.User<>,
valid?: false
>,
impl: Phoenix.HTML.FormData.Ecto.Changeset,
id: "user",
name: "user",
data: #Myproject.Accounts.User<
__meta__: #Ecto.Schema.Metadata<:loaded, "users">,
id: 59,
email: "user-576460752303418878@example.com",
confirmed_at: nil,
inserted_at: ~N[2024-05-05 18:24:05],
updated_at: ~N[2024-05-05 18:24:05],
...
>,
hidden: [id: 59],
params: %{},
errors: [],
options: [method: "put"],
index: nil,
action: nil
},
value: "user-576460752303418878@example.com"
},
inner_block: [],
label: "Email",
multiple: false,
prompt: nil,
rest: %{required: true},
type: "email"
}
stacktrace:
(myproject 0.1.0) lib/myproject_web/components/core_components.ex:350: anonymous fn/2 in MyprojectWeb.CoreComponents."input (overridable 1)"/1
(myproject 0.1.0) /home/itm/Code/myproject/lib/myproject_web/live/user_settings_live.ex:21: MyprojectWeb.UserSettingsLive.render/1
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
.......................................................
Finished in 0.7 seconds (0.5s async, 0.2s sync)
128 tests, 30 failures
Randomized with seed 825518
Dependencies:
defp deps do
25 ╎ [
24 ╎ ╎ {:bcrypt_elixir, "~> 3.0"},
23 ╎ ╎ {:phoenix, "~> 1.7.0-rc.1", override: true},
22 ╎ ╎ {:phoenix_ecto, "~> 4.4"},
21 ╎ ╎ {:ecto_sql, "~> 3.6"},
20 ╎ ╎ {:postgrex, ">= 0.0.0"},
19 ╎ ╎ {:phoenix_html, "~> 3.0"},
18 ╎ ╎ {:phoenix_live_reload, "~> 1.2", only: :dev},
17 ╎ ╎ {:phoenix_live_view, "~> 0.18.3"},
16 ╎ ╎ {:heroicons, "~> 0.5"},
15 ╎ ╎ {:floki, ">= 0.30.0", only: :test},
14 ╎ ╎ {:phoenix_live_dashboard, "~> 0.7.2"},
13 ╎ ╎ {:esbuild, "~> 0.5", runtime: Mix.env() == :dev},
12 ╎ ╎ {:tailwind, "~> 0.1.8", runtime: Mix.env() == :dev},
11 ╎ ╎ {:swoosh, "~> 1.3"},
10 ╎ ╎ {:finch, "~> 0.13"},
9 ╎ ╎ {:telemetry_metrics, "~> 0.6"},
8 ╎ ╎ {:telemetry_poller, "~> 1.0"},
7 ╎ ╎ {:gettext, "~> 0.20"},
6 ╎ ╎ {:jason, "~> 1.2"},
5 ╎ ╎ {:plug_cowboy, "~> 2.5"}
4 ╎ ]
3 end
I am using NixOS, so I am guessing I am missing a dependency. Or maybe I may just not be following the documentation correctly? Any help would be appreciated.
Thanks! ![]()
Marked As Solved
josevalim
In particular, make sure to run mix archive.install hex phx_new to get the latest.
Also Liked
al2o3cr
Make 100% sure that the various pieces of Phoenix are on the correct version.
The error you’re seeing is what I’d expect if an old core_components.ex was being used with a too-new version of phx.gen.auth:
- line that fails in 1.7.0-rc: phoenix/priv/templates/phx.gen.live/core_components.ex at 667b0d51f638a983f33d98b6c69c1f6ff9f6c71f · phoenixframework/phoenix · GitHub
This is the catch-all clause forinput, but fails because the earlier code didn’t setnameinassigns. - this chunk of this commit is the likely culprit: the shape that
inputwas expecting changed significantly Update generated files for to_form · phoenixframework/phoenix@80626fd · GitHub
See also previous discussion: KeyError at GET /users/register key :name not found in: %{ - #7 by experimentix
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









