Reputation: 1913
I used create-react-app to generate a node app. I changed the app.js file to look like this:
import React from 'react';
import logo from './logo.svg';
import './App.css';
let a = process.env.SOMETHING;
console.log(a)
function App() {
console.log(process.env)
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
{ process.env.SOMETHING }
</a>
</header>
<div>The value of something: ${a}</div>
</div>
);
}
I would expect the a
variable to reflect what I set in the environment. When I look at the console after starting the app, it is undefined, and all I see is the dollar sign where the variable should be inserted.
I've tried setting the variable in two ways. Firstly, I created a bash file called setup.bash
and gave it executable permission. It looks like this:
setup.bash
export SOMETHING="boom"
Then I changed package.json
to this:
{
"name": "server",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.10.2",
"react-dom": "^16.10.2",
"react-scripts": "3.2.0"
},
"scripts": {
"start": "./setup.bash && react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
When this didn't work, I tried starting the app like this:
SOMETHING=BOOM npm start
... and the environment variable remained undefined.
Can anyone see what the problem might be?
Upvotes: 7
Views: 16445
Reputation: 61
It did not work for me after I set REACT_APP_API_URL=https://api.url
in .env
Then I stop react-app, runnpm start
and it works fine for me.
Don't forget create .env
in the root directory
Upvotes: 6
Reputation: 7455
Create .env.development
text file.
Then you can list variables there, but all of them must start with REACT_APP_
prefix.
For example:
REACT_APP_API_URL=https://api.url
You can also run the npm start
command with variables declared before it:
REACT_APP_API_URL="https://api.url" npm start
, but again, remember about the prefix.
Read more about environment variable for create-react-app here.
Upvotes: 29