SyntaxError when trying to release to Fly.io

I’m trying to release a personal project to Fyi.io, but when I run fly launch I got the below error:

(SyntaxError) invalid syntax found on nofile:1:1:
    error: unexpected token: "\" (column 1, code point U+005C)
    │
  1 │ \true Code.ensure_loaded?(Mix.Tasks.Phx.Gen.Release)\"
    │ ^
    │
    └─ nofile:1:1
    (elixir 1.16.2) lib/code.ex:571: Code.validated_eval_string/3
    (elixir 1.16.2) lib/enum.ex:987: Enum."-each/2-lists^foreach/1-0-"/2
    (mix 1.16.2) lib/mix/tasks/run.ex:142: Mix.Tasks.Run.run/5
    (mix 1.16.2) lib/mix/tasks/run.ex:85: Mix.Tasks.Run.run/1
    (mix 1.16.2) lib/mix/task.ex:478: anonymous fn/3 in Mix.Task.run_task/5
    (mix 1.16.2) lib/mix/cli.ex:96: Mix.CLI.run_task/2
    c:/Program Files/Elixir/bin/mix:2: (file)
    (elixir 1.16.2) lib/code.ex:1489: Code.require_file/2

Here’s the Erlang and Elixir versions I’m using:
Erlang/OTP 25
Elixir 1.16.2

And here’s the list of deps:

  {:phoenix, "~> 1.7.9"},
  {:phoenix_html, "~> 3.3"},
  {:phoenix_live_reload, "~> 1.2", only: :dev},
  {:phoenix_live_view, "~> 0.19.0"},
  {:floki, ">= 0.30.0", only: :test},
  {:phoenix_live_dashboard, "~> 0.8.0"},
  {:esbuild, "~> 0.7", runtime: Mix.env() == :dev},
  {:tailwind, "~> 0.2.0", runtime: Mix.env() == :dev},
  {:swoosh, "~> 1.3"},
  {:finch, "~> 0.13"},
  {:telemetry_metrics, "~> 0.6"},
  {:telemetry_poller, "~> 1.0"},
  {:gettext, "~> 0.20"},
  {:jason, "~> 1.2"},
  {:plug_cowboy, "~> 2.5"},
  {:phoenix_ecto, "~> 4.0"},
  {:credo, "~> 1.7", only: [:dev, :test], runtime: false},
  {:horde, "~> 0.9.0"},
  {:excoveralls, "~> 0.18", only: :test}

I set the environment to PROD and ran mix compile and then mix phx.gen.release, but I didn’t get the error by doing that.

Does anyone know how to proceed?
Thanks in advance! :smiley:

are you using releases? Mix isn’t available in releases.
have you aready read this page? Deploying with Releases — Phoenix v1.7.11

That string appears to be generated here:

releaseCmd := exec.Command("mix", "run", "-e", "\"true = Code.ensure_loaded?(Mix.Tasks.Phx.Gen.Release)\"")

but how that produces a literal \ is not clear…

2 Likes

Yes, I read it and followed all the steps from Deploying on Fly.io — Phoenix v1.7.11

Interesting! Thanks for your answer. I posted that on the Fly.io community, let’s see what they tell me.