thomasA
thomasA

Reputation: 297

Undefined process.env variable with dotenv and nodejs

I have a problem with the dotenv package.

My application folder:

 |_app_folder
      |_app.js
      |_password.env
      |_package.json

I've of course install dotenv, but when i tried to log a process.env variables, the result is always undefined, please can you help me ?

password.env :

//password.env 
CLIENT_ID=xxxxxxxx

app.js :

//app.js
const express = require('express');
const app = express();
const Twig = require("twig");

//Require dotenv
require('dotenv').config();

// Setting the Twig options
app.set("twig options", {
    allow_async: true, 
    strict_variables: false
});

app.get('/', function (req, res) {
  //Trying to log it
  console.log(process.env.CLIENT_ID);
  //
  res.render('index.twig', {
    date : new Date().toString()
  });
});

app.get('/instagram',function(req,res){
  // Building the URL
  let url = 'https://api.instagram.com/oauth/authorize/?client_id=';
  // Redirect to instagram for oauth 
  res.redirect(url);
})

app.listen(3000, function () {
  console.log('Running');
})

Thank you for your time.

Upvotes: 15

Views: 27938

Answers (5)

ShadowGames
ShadowGames

Reputation: 1307

Another important note:

Place your .env file in the root folder, not in /src

Upvotes: 2

Surya
Surya

Reputation: 662

Even though I put the .env file in the root folder, still console.log(process.env.myKey) is undefined. The fix worked for me is I put the path to the env file in the require config itself like below. (It's in the root of the file - so "./.env)

require("dotenv").config({path:"./.env"})

Upvotes: 2

curtis Arrisol
curtis Arrisol

Reputation: 93

I was having somewhat the same problem for a while turns out you just have to put the .env file in the root of the directory (top-most level).

I know this post is old but I just want to make sure no one struggles with such a simple task again.

Upvotes: 4

Gaurav Sharma
Gaurav Sharma

Reputation: 633

When using import instead of require. -

You can use -r (require) to preload dotenv. You do not need to require and load dotenv in your application code.

 $ node -r dotenv/config app.js

Upvotes: 4

Patrick Hollweck
Patrick Hollweck

Reputation: 6665

By default the dotenv package does only load a file named .env if you want to load another file you need to specify the path

require("dotenv").config({ path: "path/to/file" })

Resources:

https://www.npmjs.com/package/dotenv

Upvotes: 15

Related Questions