Файл dotenv не загружает переменные среды

У меня есть файл.env в файле корневой папки

NODE_ENV=development
NODE_HOST=localhost
NODE_PORT=4000
NODE_HTTPS=false
DB_HOST=localhost
DB_USERNAME=user
DB_PASSWORD=user

И файл server.js папке root/app/config/server.js. Первая строка файла server.js

require('dotenv').config();

Я также пробовал:

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

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

Однако моя переменная env не загружается, когда я запускаю файл server.js из командной строки

node root/app/config/server.js

Если я использую визуальную студию и нажимаю F5, она загружается!

Я не уверен, что я делаю неправильно, что мне не хватает. Любое предложение очень ценится. Благодарю.

Ответы

Ответ 1

Как насчет использования require('dotenv').config({path:__dirname+'/./../../.env'})?

Ваша проблема, кажется, путь выполнения.

Ответ 2

Добавляя немного нюанса к ответу выше - если вы вызываете dotenv из вложенного файла, а ваш .env файл находится в корне проекта, то способ, которым вы хотите подключить точки, состоит в следующем:

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

Ответ 3

Это решило мои проблемы в Node v8.14.1:

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

Простое выполнение require('dotenv').config({path:__dirname+'/./../../.env'}) привело к расположению, которое было разрешено как /some/path/to/env/./../../.env

Ответ 4

Вот еще одна хорошая альтернатива:

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

Это будет повторять родительские каталоги, пока не найдет файл .env для использования.

В качестве альтернативы вы также можете использовать этот модуль, называемый ckey вдохновленный одной строкой выше.

Файл .env из основного каталога.

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

какой-то файл js из подкаталога

const ck = require('ckey');

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