I’m trying to access process.env.NODE_ENV
inside my app, but I only get process is not defined
when I check it.
package.json
:
JavaScript
x
5
1
"scripts": {
2
"dev": "node ./node_modules/webpack/bin/webpack.js",
3
"prod": "NODE_ENV=production node ./node_modules/webpack/bin/webpack.js -p"
4
},
5
webpack.config.js
:
const NODE_ENV = process.env.NODE_ENV ? process.env.NODE_ENV.toLowerCase() : 'development';
and below :
JavaScript
1
10
10
1
plugins: [
2
new webpack.DefinePlugin({
3
'process.env': {
4
'NODE_ENV': JSON.stringify(NODE_ENV),
5
'URL_DEV': JSON.stringify("specificIP"),
6
'URL_PROD': JSON.stringify("OtherIP")
7
}
8
})
9
]
10
In the app source:
JavaScript
1
11
11
1
switch (process.env.NODE_ENV) {
2
case 'development':
3
url = process.env.URL_DEV;
4
break;
5
case 'production':
6
url = process.env.URL_PROD;
7
break;
8
default:
9
url = process.env.URL_DEV;
10
}
11
And it seems that process
is not defined… What am I doing wrong here?
Advertisement
Answer
I’m not totally sure if the problem came from my scripts
key inside package.json
but it seems the NODE_ENV
is now correctly set if I use this :
JavaScript
1
5
1
"scripts": {
2
"dev": "cross-env NODE_ENV=development node ./node_modules/webpack/bin/webpack.js --progress --colors --bail",
3
"prod": "cross-env NODE_ENV=production webpack -p --progress --colors --bail"
4
}
5
So I actually used cross-env
and… it magically works.
If you’re out of options like I was, you can still give this a shot.