Phx.new --live generates a broken project

Hi,

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.

Where is my fault? What did I miss?

Best regards
Oliver

I think, I found the problem.

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.

1 Like

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.

1 Like

Wow, thanks so much for figuring this out.!

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.

Thanks again!

Another solution is to skip the dashboard completely for the moment by specifying --no-dashboard on the command line.

This is my bad. I broke it yesterday with a new release, I will ship a fix today. Thanks for the report!

EDIT: v0.3.5 has been released and v0.3.4 has been retired.

5 Likes