Fl4m3Ph03n1x

Fl4m3Ph03n1x

Cannot launch Elixir Desktop app when MIX_ENV=test

Background

I have Phoenix umbrella application. When inside said application, I can run it without issues if MIX_ENV=prod. However, if I do mix test while MIX_ENV=dev, I get an error.

Problem

The error I have is as follows:

18:39:42.101 [error] ** wx object server {:local, WebInterface} terminating
** Last message in was {:"$gen_cast", {:show, &WebInterface.Endpoint.url/0}}
** When Server state == %Desktop.Window{
  module: nil,
  taskbar: nil,
  frame: {:wx_ref, 35, :wxFrame, []},
  notifications: %{},
  webview: {:wx_ref, 49, :wxWebView, []},
  home_url: &WebInterface.Endpoint.url/0,
  last_url: nil,
  title: "Market Manager",
  rebuild: 0,
  rebuild_timer: {:interval, #Reference<0.2679771817.2635857922.255366>}
}
** Reason for termination ==
** {:badarg,
 [
   {:erlang, :binary_to_existing_atom,
    ["Elixir.WebInterface.Endpoint.HTTP", :utf8],
    [error_info: %{module: :erl_erts_errors}]},
   {:elixir_aliases, :safe_concat, 1,
    [file: ~c"src/elixir_aliases.erl", line: 139]},
   {WebInterface.Endpoint, :url, 0,
    [file: ~c"lib/web_interface/endpoint.ex", line: 4]},
   {Desktop.Window, :prepare_url, 1,
    [file: ~c"lib/desktop/window.ex", line: 666]},
   {Desktop.Window, :handle_cast, 2,
    [file: ~c"lib/desktop/window.ex", line: 604]},
   {:wx_object, :handle_msg, 5, [file: ~c"wx_object.erl", line: 493]},
   {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}
 ]}

Reading this, I understand the problem comes from my application.ex, namely:

@impl true
  def start(_type, _args) do
    children = [
      Telemetry,
      {Phoenix.PubSub, name: PubSub},
      Endpoint,
      Manager,
      %{
        id: Desktop.Window,
        start:
          {Desktop.Window, :start_link,
           [
             [
               app: :web_interface,
               id: WebInterface,
               title: "Market Manager",
               size: WindowUtils.calculate_window_size(0.6, 0.8),
               menubar: MenuBar,
               icon: "static/images/resized_logo_5_32x32.png",
               url: &WebInterface.Endpoint.url/0    # This line seems to be a problem
             ]
           ]},
        restart: :transient,
        shutdown: 5_000
      }
    ]

    opts = [strategy: :one_for_one, name: WebInterface.Supervisor]

    Supervisor.start_link(children, opts)
  end

After reading more on the subject I changed my config/test.exs to this:

import Config

config :web_interface, WebInterface.Endpoint,
  http: [ip: {127, 0, 0, 1}, port: 4002],
  secret_key_base: "some_key",
  server: true,
  check_origin: false

But this still does not fix the issue.

In contrast, this is my config/prod.exs:

config :web_interface, WebInterface.Endpoint,
  http: [ip: {127, 0, 0, 1}, port: 80],
  cache_static_manifest: "priv/static/cache_manifest.json",
  secret_key_base: "some_key",
  check_origin: false,
  server: true

But the issue still occurs.

Questions

  • Why am I having this issue?
  • How can I fix it?

Marked As Solved

Fl4m3Ph03n1x

Fl4m3Ph03n1x

Answer

Turns out that in a previous launch of the application, wxWidgets (the process) had exited in a bad state. Perhaps it crashed or something else happened, but what matters here is that trying to restart it was impossible.

I had to restart my machine to start everything in a new clean state.
I also deleted the _build folder to be sure.

This solved the issue.

Where Next?

Popular Frontend topics Top

ClaudiaGiv
I have a sveltekit project that is using GoTrue library for authentication. In development mode (npm run dev) everything works but when I...
New
Zuber
How to make a website like webnovel and wattpadd where subscribers and logged in user post stories like their own Novel in a website and ...
New
palak231
Hi this is Palak Sharma I am new here and I found this community while researching about JavaScript over the internet. Well I have comp...
/js
New
Fl4m3Ph03n1x
Background I have a custom component in my LiveView, which is basically a group of checkboxes. I want to add a new attribute to my custo...
New
pjamesrud
I am creating an app that allows user to enter values and depending on the value a number of textviews are changed programmatically from ...
New
ramiro-marinio
Hello. So unexperienced frontend dev here. Basically, 3 or 4 months ago I started working on a project and I committed the capital sin of...
New
avipal
I have an application where it is three layer 1st layer- A legacy core routines 2nd layer- built on top of the Core routine using Dotno...
New
jaeyson
would it be backwards if I’m learning react? last time I used UI library (aside from LiveView) was Elm (not much) and that was eons ago.
New
ounce591
I am currently designing the navbar of a workout tracking app written using React Native. The navbar has three buttons: Splits/Plans ...
New
SteelFork2819
hi does anyone know how to render a cloud-stored 3D file and move a camera around in it using native html5 functions? i really don’t know...
New

Other popular topics Top

Exadra37
Please tell us what is your preferred monitor setup for programming(not gaming) and why you have chosen it. Does your monitor have eye p...
New
siddhant3030
I’m thinking of buying a monitor that I can rotate to use as a vertical monitor? Also, I want to know if someone is using it for program...
New
AstonJ
You might be thinking we should just ask who’s not using VSCode :joy: however there are some new additions in the space that might give V...
New
PragmaticBookshelf
From finance to artificial intelligence, genetic algorithms are a powerful tool with a wide array of applications. But you don't need an ...
New
AstonJ
We’ve talked about his book briefly here but it is quickly becoming obsolete - so he’s decided to create a series of 7 podcasts, the firs...
New
PragmaticBookshelf
Author Spotlight: VM Brasseur @vmbrasseur We have a treat for you today! We turn the spotlight onto Open Source as we sit down with V...
New
DevotionGeo
I have always used antique keyboards like Cherry MX 1800 or Cherry MX 8100 and almost always have modified the switches in some way, like...
New
AstonJ
If you’re getting errors like this: psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory ...
New
PragmaticBookshelf
Fight complexity and reclaim the original spirit of agility by learning to simplify how you develop software. The result: a more humane a...
New
PragmaticBookshelf
Lint your docs like code: turn any style guide into enforceable rules with Vale and publish clear, consistent content every time. ...
New