Моя проблема
У меня проблемы с загрузкой переменных среды в систему производства Heroku. При нажатии на Heroku я получаю следующее сообщение об ошибке во время сценария сборки:
Failed to load ./.env.
Текущая настройка
Я использую файл .env
в root моего приложения на местном уровне. Я могу успешно загрузить свои переменные окружения с помощью плагина dotenv-webpack
следующим образом:
//webpack.config
const Dotenv = require('dotenv-webpack')
module.exports = {
// other settings...
plugins: [
new Dotenv(),
]
};
Загрузка переменных окружения:
//server.js
require('dotenv').config();
console.log(process.env.MY_VARIABLE);
Это работает как очарование локально, но не работает в Heroku .
Примечание: мои конфигурационные переменные установлены на Heroku, так что это не проблема.
Что я пробовал
У меня есть Я уже пытался принудительно загрузить файл .env
из root моего приложения следующим образом:
new Dotenv({ path: path.resolve(__dirname, './.env') });
Кто-то также отметил, что среда Heroku может быть системными переменными среды поэтому я попытался загрузить их, используя:
new Dotenv({ systemVars: true });
Ни одна из этих попыток не сработала для меня.
Моя догадка
У меня есть заметил, что Heroku сохраняет их файл .env
в ./tmp/build_someRandomBuildId/.env
. Я предполагаю, что файл .env
не находится в root каталога, поэтому dotenv не может его найти. Также нет способа жестко закодировать местоположение этого файла в моей конфигурации Webpack, поскольку идентификатор сборки рандомизируется с каждой сборкой. Есть ли способ заставить Webpack искать файл в динамическом c месте?