I am somewhat confused. I just wanted to create a new project using Elixir 1.11.1 and Phoenix 1.5.6 using the command mix phx.new --live new_project.
As soon as I start the server with mix phx.server and connect to port 4000, I get the following error.
[error] #PID<0.622.0> running NewProjectWeb.Endpoint (connection #PID<0.621.0>, stream id 1) terminated
Server: localhost:4000 (http)
Request: GET /
** (exit) an exception was raised:
** (ArgumentError) no action :home for NewProjectWeb.Router.Helpers.live_dashboard_path/2. The following actions/clauses are supported:
live_dashboard_path(conn_or_endpoint, :page, params \\ [])
live_dashboard_path(conn_or_endpoint, :page, node, page, params \\ [])
live_dashboard_path(conn_or_endpoint, :page, page, params \\ [])
I don’t know what I did differently since I did it last time. I think the only difference is that I use more recent versions of Elixir and Phoenix. I think I used Elixir 1.10.x and Phoenix 1.5.4.
defp deps do
[
...
{:phoenix_live_dashboard, "~> 0.3 or ~> 0.2.9"},
...
]
end
This line resulted in installing version 0.3.4 of live dashboard. If I replace it with “~>0.2.9”, I get version 0.2.10 and then everything works again.
The real solution is to modify a line of code in the generated project. This actually affects any newly generated project that doesn’t have the --no-html flag.
In a liveview project, you want to change this line in root.html.leex:
<li><%= link "LiveDashboard", to: Routes.live_dashboard_path(@conn, :home) %></li>
Specifically the live_dashboard_path function call here. Change it to Routes.live_dashboard_path(@conn, :page, :home) like so:
<li><%= link "LiveDashboard", to: Routes.live_dashboard_path(@conn, :page, :home) %></li>
This same problem occurs on app.html.eex inside of regular, non-liveview phoenix projects.
I’m pretty much a complete novice, and I’ve wasted a bunch of time today deploying broken projects to heroku, not knowing they were broken from the get-go.