Как получить доступ к переменным .env из express в узле?

#node.js #express #environment-variables

Вопрос:

Я пытаюсь вернуть свои переменные env в экспресс-файл, но я получаю null .

Это моя структура папок

 --backend
  --.env
  --src
    --index.ts

--frontend
 
 //.env
TEST: mytest
 
 //index.ts
app.get("/api/test", (request, response) => {
  response.send({test: [process.env.TEST]})
})
 

Ответ №1:

Установить https://www.npmjs.com/package/dotenv

Использование Как можно раньше в вашем приложении, требуйте и настраивайте dotenv.

require('dotenv').config()

 
// server.js
console.log(`Your port is ${process.env.PORT}`); // undefined
const dotenv = require('dotenv');
dotenv.config();
console.log(`Your port is ${process.env.PORT}`); // 8626
 

так что в вашем случае

 /src/ 
   index.ts
   .env
 

Вы также можете проверить наличие ошибок

 const result = dotenv.config()

if (result.error) {
  throw result.error
}

console.log(result.parsed)
 

Комментарии:

1. все еще не определено. возможно, файл .env находится не в том месте? извините, я понятия не имею

2. переместите .env внутрь src, он загрузится автоматически

Ответ №2:

  • В том .env , что должно быть:
 TEST=mytest
 
  • (Если приведенное выше изменение не работает) Поскольку файл .env находится не в той папке, index.ts в которой находится файл, вам может потребоваться указать путь к .env файлу.

В начале вашего index.ts файла :

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

Ответ №3:

Исправил это, сделав две вещи:

Сначала создается .env файл с помощью терминала. (см. справку)

Затем я переместил .env файл в root папку своего бэкенда (удалив его из src )