kreynolds

kreynolds

I’ve been exploring elixir and phoenix the last couple of weeks and built an API with phoenix but am having trouble connecting it to a react frontend. I tried this approach which more or less worked. Navigating to the root serves up the static files and react router takes over from there but if I navigate directly to a url phx router cant find a defined route and I get a “no route found for GET /login” page.

Is there a current guide or some pointers you guys can give me for best practices when connecting to more than a single page app?

Showing Posts 1 to 3

isaac-rstor

isaac-rstor

I’ve only done product demos, but I’ve had a lot of success with react frontend statically served using a static plug with API endpoints defined in plug, dispensing with most of Phoenix (plug underlies most Phoenix routes)

outlog

outlog

You’ll want a “catchall” in your router..

what urls are you using in the react app?

say you are using /admin and the controller is PageController index

  scope "/admin", MyApp.Web do
    pipe_through(:browser)
    get("/*path", PageController, :index)
  end

then hitting /admin/login will fire up the react app..

if you haven’t “scoped” you react with /admin or /app or similar I think you’ll need to be explicit eg.

  scope "/", MyApp.Web do
    pipe_through(:browser)

    get("/", PageController, :index)
    get("/login", PageController, :index)
   #etc
  end
kreynolds

kreynolds OP

I’m sorry if I’m asking obvious questions I’m pretty new to both backend and phoenix, most of my previous experience with backend work was C# and even that was limited.

@isaac-rstor Could you expand on this a little? Right now I’m using plug_static_index_html

  plug(Plug.Static.IndexHtml, at: "/")
  plug(
    Plug.Static,
    at: "/",
    from: "priv/pms-fe/build/",
    only: ~w(index.html favicon.ico static service-worker.js)
  )

to display my generated react scripts at the root, is there a way to route everything to this static directory and then redirect just the /api requests to my api controllers? I tried using a wildcard in the at: argument but couldn’t come up with anything.

@outlog Yeah that makes sense to me, I tried something similar but right now I’m not using a controller to display the react app, I experimented with setting up a view that generated an index.html I could hook into with react but couldn’t figure out a good way to integrate my generated js without bundling it all into an app.js I guess.

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New
ryanwinchester
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted” Version...
New

Other Trending Topics Top

pcharbon
ShadcnUI is a transport-neutral library of Phoenix function components built with semantic HEEX, native HTML behavior, and package-owned ...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews