NodeJS environment variables undefined
Asked Answered
B

6

18

I'm trying to create some envrioment variables but when I create the file and run the server the seem to be undefined. I'm using nodemon. I have restarted my server and no luck.

UPDATED

.env

MONGO_ATLAS_PW = "xxxx";
JWT_KEY = "secret_this_should_be_longer";

package.json

...
  "scripts": {
    ...
    "start:server": "nodemon ./server/server.js"
  }

app.js

 require('dotenv').config();
 ...
 console.log(process.env.JWT_KEY); //undefined 
Bicentennial answered 29/6, 2019 at 22:35 Comment(0)
B
5

This needed to be in the root directory of my project.

nodemon.json

{
  "env": {
    "MONGO_ATLAS_PW": "xxxx",
    "JWT_KEY": "secret_this_should_be_longer"
  }
}
Bicentennial answered 30/6, 2019 at 17:31 Comment(0)
T
18

I believe the nodemon.json file is only for setting nodemon specific configuration. If you look at the nodemon docs for a sample nodemon.json file, the only env variable they mention setting is NODE_ENV.

Have you considered putting these environment variables for your app in a .env file instead? There is a package called dotenv that is helpful for managing env variables in Node.

First, install dotenv using the command npm install dotenv

Then, create a file called .env in the root directory with the following:

MONGO_ATLAS_PW=xxxxx
JWT_KEY=secret_this_should_be_longer

Finally, inside your app.js file after your imports add the following line:

require('dotenv').config()
Timberlake answered 29/6, 2019 at 22:53 Comment(1)
What does your directory structure look like? Where is .env located in your project and where is app.js? .env should be in the root directory. Also, you haven't exactly copied the syntax for the .env file -- it should not be JavaScript syntax (though this wouldn't cause the variable to be undefined).Timberlake
O
12

I believe you're referring to the dotenv package. To configure it, first create a file called .env with your keys and values stored like so:

MONGO_ATLAS_PW=xxxxx
JWT_KEY=secret_this_should_be_longer

Then, in your server.js, add this near the top:

require("dotenv").config();

Then the process.env variable will be an object containing the values in .env.

Outmarch answered 29/6, 2019 at 23:20 Comment(1)
See the syntax - it needs to be that exactly. Try copy/pasting the .env in my answer into your file and see if that works @PatricioVargas.Outmarch
B
5

This needed to be in the root directory of my project.

nodemon.json

{
  "env": {
    "MONGO_ATLAS_PW": "xxxx",
    "JWT_KEY": "secret_this_should_be_longer"
  }
}
Bicentennial answered 30/6, 2019 at 17:31 Comment(0)
J
2

The env variable do not contain the trailing white spaces and also remove the quotes

MONGO_ATLAS_PW = "xxxx"; 
JWT_KEY = "secret_this_should_be_longer";

to

MONGO_ATLAS_PW=xxxx 
JWT_KEY=secret_this_should_be_longer

and restart the server

or you can also try using the nodemon.json - create a new file called nodemon.json in your root directory

{
    "env": {
        "MONGO_ATLAS_PW" : "xxxx",
        "JWT_KEY" : "secret_this_should_be_longer"
    }
}

and restart the server

for accessing the variable

process.env.MONGO_ATLAS_PW 
process.env.JWT_KEY
Jacquettajacquette answered 29/6, 2021 at 9:35 Comment(0)
X
1

This file nodemon.json needs to be in the root directory of your project.

nodemon.json

{
  "env": {
    "MONGO_ATLAS_PW": "xxxx",
    "JWT_KEY": "secret_this_should_be_longer"
  }
}

Install dotenv version 10.0.0 in the file below; nodemon.json

"dependencies": {
    "dotenv": "10.0.0",
  },

index.js (assuming its your main server)

Finally import into your main server file (index.js) as below;

require("dotenv").config();
Xanthine answered 21/9, 2023 at 21:11 Comment(0)
M
0

Sure someone at some point will run into this headache somehow. I had the issue of not being able to read these variables even though I absolutely had everything exactly as it needed to be (and I didn't even need the dotenv package) in my .env file. I uninstalled dotenv and any other packages to help and values remained undefined until...

I deleted node_modules and did a fresh npm install.

Somehow, that fixed it based on a config issue I am sure I introduced at some point in the process. Hours of debugging came down to this solution.

Hope this saves someone else all of this time.

Mesognathous answered 24/6 at 19:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.