marekciupak

marekciupak

Hi everyone,

In the Phoenix application, I have a React code in the assets/javascript/ folder. I’m using Brunch and Babel (added by the framework).

At some point I needed to add a configuration variable containing the client_id for Google API. The config is needed in React part of the app and it should be different depending on the environment (dev & test, prod). Ideally, it should be stored outside of the Git repository.

The questions is how should I store and access the config. My idea was to use environment variables and access them using process.env in Javascript.

The problem is that it doesn’t work:

After running GOOGLE_CLIENT_ID=123 mix phoenix.server, the value of process.env.GOOGLE_CLIENT_ID in Javascript code is undefined. I’m not sure why. It worked for me in Rails 5.2 with Webpack and React.

What solution would you recommend for the Phoenix and React app?

Best,
Marek

Showing Posts 1 to 4

easco

easco

Where is your JavaScript code running? On the server or in the browser?

Setting an environment variable at the point you run your server would do nothing to transfer that environment variable to the browser. From searching for process.env on the internet it looks like it’s part of Node.js. So it would be available to a server-side component running in JavaScript, but it doesn’t really look relevant to client-side JavaScript in the browser.

The roughly equivalent call for Elixir on the server side is System.get_env. That let you should see your client ID as you’ve set it on your mix line. Transferring that securely to the browser would probably involve using HTTPS or some other encryption in a server to client transfer step (say an API call).

peerreynders

peerreynders

With webpack that would be accomplished with something like

See also: Should I move from brunch to webpack? - #14 by peerreynders

I’m using Brunch and Babel (added by the framework).

I assume that “the framework” refers to Phoenix.

https://github.com/phoenixframework/phoenix/pull/2779

Description how to use webpack 4 (with Phoenix 1.3.x) instead of brunch:
https://github.com/kokolegorille/app/blob/master/WEBPACK4.md

alternate

That being said recommended practice is to limit the reliance on environment variables to one, single variable typically process.env.NODE_ENV - which is then used to select the correct module (e.g. settings.prod.js vs. settings.dev.js) to include in the generated JS bundle.

SurviveJS: Choosing which module to use


A similar approach seems to be possible with brunch with the jsenv-brunch plugin (npm).

marekciupak

marekciupak OP

Many thanks!

lucasprag

lucasprag

Could someone explain how would people use environment variables in their front-end (react) now that we’re using esbuild in Phoenix please?

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
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
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
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
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews