Consume_uploaded_entries/3 - undefined function

After upgrading to the latest macOS Sonoma 14.0, I had to reinstall erlang and elixir plugins and choose the latest versions:

  • erlang 26.1.1
  • elixir 1.15.6

I followed the Pragmatic Programmers - programming-phoenix-liveview_B10.0 book and was building the Pento app which was working fine just before the update and used elixir 1.15.2-otp-25 version.

Now the below function:

defmodule PentoWeb.ProductLive.FormComponent do
  use PentoWeb, :live_component

  alias Pento.Catalog
...
def params_with_image(socket, params) do
    path =
      socket
      |> consume_uploaded_entries(:image, &upload_static_file/2)
      |> List.first()

    Map.put(params, "image_upload", path)
  end
...
end

raises a compilation error:

Compiling 47 files (.ex)
error: undefined function consume_uploaded_entries/3 (expected PentoWeb.ProductLive.FormComponent to define such a function or for it to be imported, but none are available)
  lib/pento_web/live/product_live/form_component.ex:53: PentoWeb.ProductLive.FormComponent.params_with_image/2


== Compilation error in file lib/pento_web/live/product_live/form_component.ex ==
** (CompileError) lib/pento_web/live/product_live/form_component.ex: cannot compile module PentoWeb.ProductLive.FormComponent (errors have been logged)

Here is the output of the used Elixir/OTP versions:

elixir -v
Erlang/OTP 26 [erts-14.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit]

Elixir 1.15.6 (compiled with Erlang/OTP 26)

Even after installing erlang 25 version as described in this issue, and using the previously installed elixir/phoenix version elixir 1.15.2-otp-25:

Erlang/OTP 25 [erts-13.2.2.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]

Elixir 1.15.2 (compiled with Erlang/OTP 25)

it still fails :frowning: . Is it due to the macOS upgrade or smth else then?
Any idea?

The source code of the app could be found here.

Just fixed that weird issue:

  • left VS Code
  • set up the elixir version to elixir 1.15.6-otp-25,
  • removed from the Terminal .elixir_ls and _build folders
  • install the dependencies again with mix deps.get
  • compile the app with mix compile → no errors, yay!
  • start the app as usual with mix phx.server and it worked.
1 Like