web-dev-qa-db-fra.com

le fichier dotenv ne charge pas les variables d'environnement

J'ai un fichier .env à dossier racine fichier 

NODE_ENV=development
NODE_Host=localhost
NODE_PORT=4000
NODE_HTTPS=false
DB_Host=localhost
DB_USERNAME=user
DB_PASSWORD=user

Et server.js fichier dans le dossier root/app/config/server.js. La première ligne du fichier server.js est 

require('dotenv').config();

J'ai aussi essayé de suivre: 

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

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

Cependant, mes variables env ne sont pas chargées lorsque j'exécute le fichier server.js À partir de command Prompt

node root/app/config/server.js

Si j'utilise le visual studio et que j'appuie sur F5 , ça charge !!

Je ne suis pas sûr de ce que je fais mal, de ce qui me manque. Toute suggestion est hautement appréciée. Merci.

6
Zammy Page

Que diriez-vous d'utiliser require('dotenv').config({path:__dirname+'/./../../.env'})?

Votre problème semble être le chemin d'exécution.

14
Yonghoon Lee

Ajoutant une petite nuance à la réponse ci-dessus - si vous appelez dotenv à partir d'un fichier imbriqué et que votre fichier .env se trouve à la racine du projet, la manière dont vous souhaitez connecter les points est la suivante: 

require('dotenv').config({path:'relative/path/to/your/.env'})
2
zero_cool

Voici une autre bonne alternative:

require('dotenv').config({ path: require('find-config')('.env') })

Cela recurse répertoires parents jusqu'à ce qu'il trouve un fichier .env à utiliser.

Vous pouvez également utiliser alternativement ce module appelé ckey inspiré du one-liner ci-dessus.

Fichier .env du répertoire principal.

# dotenv sample content
[email protected]
PASSWORD=iampassword123
API_KEY=1234567890

des fichiers js du sous-répertoire

const ck = require('ckey');

const userName = ck.USER;     // [email protected]
const password = ck.PASSWORD; // iampassword123
const apiKey   = ck.API_KEY;  // 1234567890
0
Jorge Rosal

Cela a résolu mes problèmes dans le nœud v8.14.1:

const path = require('path')
require('dotenv').config({ path: path.resolve(__dirname, '../.env') })

Le simple fait de require('dotenv').config({path:__dirname+'/./../../.env'}) a abouti à un emplacement résolu en /some/path/to/env/./../../.env

0
Fraccus