Reputation: 1362
Trying to utilize env variables within react, and im getting an
undefined
I'm not using webpack, just dotenv. Not sure why its not working.
I referenced this
and the it doesn't have the solution im looking for.
package.json
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^3.9.1",
"@material-ui/icons": "^3.0.2",
"axios": "^0.18.0",
"history": "^4.7.2",
"http-proxy-middleware": "^0.19.1",
"material-ui-icons": "^1.0.0-beta.36",
"moment": "^2.24.0",
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-redux": "^6.0.0",
"react-router-dom": "^4.3.1",
"react-scripts": "2.1.3",
"redux": "^4.0.1",
"redux-thunk": "^2.3.0"
},
"scripts": {
"start": "PORT=8001 react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"devDependencies": {
"dotenv": "^6.2.0"
}
}
Home.js
import React, {Component} from 'react';
// import axios from 'axios';
import Grid from '@material-ui/core/Grid';
import Paper from '@material-ui/core/Paper';
import {withStyles} from '@material-ui/core/styles';
import Chip from '@material-ui/core/Chip';
import {signWithGithub} from '../actions/';
import {connect} from 'react-redux';
import {compose} from 'redux';
import Avatar from '@material-ui/core/Avatar';
import Axios from '../Axios'
import {Redirect, withRouter} from 'react-router-dom';
const styles = theme => ({
root: {
flexGrow: 1,
padding: 20
},
paper: {
padding: theme.spacing.unit * 2,
textAlign: 'center',
color: theme.palette.text.secondary
},
chip: {
margin: theme.spacing.unit
}
});
class Home extends Component {
constructor(props) {
super(props);
this.state = {
user: ""
}
}
componentWillMount = () => {
console.log(process.env.BASE_GITHUB_SIGNIN);
}
.env
BASE_URL=http://localhost:8000
BASE_SIGN_IN=http://localhost:8000/api/users/loginUser
BASE_GITHUB_SIGNIN=http://127.0.0.1:8000/api/users/auth/github
Upvotes: 3
Views: 2555
Reputation: 1
I had the same problem. If you have not done the .env file, do so in your main directory. Remember to start your react application, this will allow React to read the.env file. I created a util directory and did a function call to return the variables in my .env file. I called the functions from my get request.
`export const API_KEY = () => {
return process.env.REACT_APP_API_KEY; // will return API KEY in .env file.
};
export const API_URL = () => {
return process.env.REACT_APP_API_URL; // will return API URL in .env file.
};
` Once this is done, the function will return the .env variables to your API calls.
` axios.get(API_URL(), {
params: { query: term },
headers: {
Authorization: `Client-ID ${API_KEY()}`,
},
});`
Upvotes: 0
Reputation: 3457
If you have created your app using create-react-app , the env has a standard format like here.
Just prepend REACT_APP to every variable, that will do fine
REACT_APP_YOUR_VARIABLE_NAME
Upvotes: 5