#javascript #express #jestjs #environment-variables
Вопрос:
Итак, мой конфигурационный файл выглядит так:
require('dotenv').config();
const PORT = process.env.REACT_APP_PORT
const MONGODB_URI = process.env.NODE_ENV === 'test'
? process.env.REACT_APP_TEST_MONGODB_URI
: process.env.REACT_APP_MONGODB_URI
const SECRET = process.env.REACT_APP_SECRET
const NODE_ENV = process.env.NODE_ENV;
module.exports = {
MONGODB_URI,
PORT,
SECRET,
NODE_ENV
}
И переменные .env (доступ к которым осуществляется с помощью переменной config.) загружаются без проблем во всей программе.
Но когда я запускаю jest из папки, в которой находится тест, они не загружаются и остаются неопределенными.
Но когда я запускаю jest из корневой папки (где находится package.json), они загружаются.
Кто-нибудь может объяснить, почему, пожалуйста?
И следующая странная часть:
Если я изменю свою конфигурацию вот так:
const path = require('path')
require('dotenv').config({ path: path.resolve(__dirname, "../.env") });
//the rest is the same as before
Это внезапно сработает, даже если я запущу jest из папки, в которой находятся тесты.
Может кто-нибудь, пожалуйста, объяснить мне это странное взаимодействие?
Моя файловая структура выглядит так, кстати
Комментарии:
1. Ваш
.env
файл находится в корневом каталоге, не так ли? Я предполагаю, что зависимость загружает конфигурацию из корня, если вы не находитесь в корне, вам нужно указать путь.2. @carlosnufe да, мой .env находится в корне. Но все переменные среды уже загружены в config.js, и экспортируется оттуда. Так что шутка не имеет никакого отношения к фактическому файлу .env.