#reactjs #amazon-s3 #axios #environment-variables
Вопрос:
Я использую heroku для развертывания серверной части nodejs, а amazon s3-для развертывания статических файлов приложения react, поэтому интерфейс, хранящийся в корзине s3, запрашивает серверную часть heroku.
Как только я закончил создавать свою промежуточную среду для heroku, мне просто нужно было создать новую корзину и подключить новый URL-адрес, чтобы промежуточный интерфейс мог правильно отправлять запросы в промежуточную серверную, я закончил с чем-то подобным в своем приложении react:
// index.js let BASE_API_URL; if (process.env.NODE_ENV === "production") { BASE_API_URL = "https://myproductionapiurl.com"; else if (process.env.NODE_ENV === "staging") { BASE_API_URL = "https://mystagingapiurl.s3-website.us-east-2.amazonaws.com"; } else { BASE_API_URL = "https://someotherurl.com"; } axios.defaults.baseURL = BASE_API_URL;
Но потом я заметил, что s3, будучи службой для сохранения ваших статических файлов, не имеет возможности устанавливать переменные среды, поэтому я не могу указать, на основе process.env.NODE_ENV
какого URL делать запросы, и я застрял.
Прямо сейчас я просто жестко кодирую URL-адрес, чтобы он работал, но как только я попытаюсь объединить промежуточную и производственную среды, всегда будет возникать конфликт git, есть ли способ сделать это с помощью корзин amazon s3 и реагировать?
Комментарии:
1. Вам пришлось бы сделать это частью процесса сборки , но тогда вы не можете просто продвигать одни и те же артефакты в разных средах (и должны быть в состоянии перестроиться, если появится новая среда).
2. @jonrsharpe я использую
npm run build
, я не уверен, что задав переменную окружения есть (я.ЕNODE_ENV=staging npm run build
может сделать трюк, но если это произойдет, я могу добавить, что команда на производство в промежуточной ветке, я не знал, что это была возможность и я стараюсь это прямо сейчас, чтобы увидеть, если это может быть решением 🙂
Ответ №1:
Благодаря @jonrsharpe я смог заставить его работать, так как я использую react вместо использования NODE_ENV
(которое нельзя перезаписать) Я использовал REACT_APP_ENV
и установил его в качестве переменной среды перед запуском сборки:
REACT_APP_ENV=staging npm run build