Reputation: 7162
I am trying to set and retrieve node app process.env vars using package.json, so by researching the issue, I've found an example to set / retrieve process.env through the 'config' section, so I added a new config section as shown below :
"config" : { "var1" : "test", "var2" : "test2", "var3" : "test3" },
But I couldn't access any of the above vars from server.js using for example:
console.log(process.env.npm_package_config_var1);
So I was wondering how I can set / retrieve process.env var using package.json? Thanks
*I am using npm 4.4.1, node 7.4.0 and I run the app using (npm run dev)
Upvotes: 8
Views: 49849
Reputation: 831
This will only work if you start your application using npm:
so have:
"scripts": {
"start": "node server.js"
},
"config" : { "var1" : "test", "var2" : "test2", "var3" : "test3" }
then:
npm run start
and within server.js this will display the variable correctly:
console.log(process.env.npm_package_config_var1);
Upvotes: 1
Reputation: 1000
You cannot just set environment variables in package.json.
You may try out node -p process.env
as your npm script to inspect your env variable. And ensure that nothing else overwrites your values. Here is another example which works for me.
Upvotes: 7
Reputation: 111268
You cannot just set environment variables in package.json.
You can set them in your script sections using:
"scripts": {
"start": "ENV_VAR=abc node app.js",
},
or:
"scripts": {
"start": "cross-env ENV_VAR=abc node app.js",
},
using the cross-env module. See:
Environment variables are something that your programs get at runtime, not something stored in a config - unless you use something like dotenv, see:
but this is using the .env
file, not package.json.
Upvotes: 20
Reputation: 4443
I don't really understand, what are you trying to do.
But if you want to retrieve env variables you have to do define your dev script in your package.json
like this : NODE_ENV=dev node index.js
Then fetch your env with : process.env.NODE_ENV
Upvotes: 3