#react-native #environment-variables #detox
Вопрос:
Я настраиваю среды тестирования в приложении react native. Недавно мои команды сборки перестали включать переменные среды, которые я в них передаю.
EMAIL=testemail@test.com PASSWORD=testpassword xcodebuild....
Когда приложение запускается, process.env.EMAIL возвращает неопределенное значение, и если я зарегистрирую объект process.env, электронная почта, ПАРОЛЬ или любая другая переменная, указанная в командной строке, не будет указана.
ОБНОВЛЕНИЕ: Похоже, это действительно проблема с детоксикацией/метро. Именно здесь должны быть получены переданные переменные среды, как описано в документах Detox, касающихся издевательств, которые сейчас также нарушены.
Есть идеи о том, что я изменил, что нарушило эту функциональность?
Ответ №1:
Вы не можете хранить переменные в .env
файле и получать к ним доступ process.env
непосредственно в react native.
Для достижения этой цели вам необходимо интегрировать библиотеку react-native-config.
Комментарии:
1. Спасибо. Я рассматривал это, но для целей моего тестового сценария гораздо удобнее передавать их в качестве переменной bash из вызова сборки. (ранее в сценарии я использовал те же переменные для создания пользователя через сопутствующее веб — приложение) Это работало и раньше, поэтому я меньше заинтересован в поиске нового решения, чем в том, чтобы все работало так, как было.
2. Могу я узнать, куда именно вы передаете эти переменные bash ? Лучше, если вы сможете обновить весь сценарий и поток, чтобы дать представление обо всем этом.
3. Конечно. Скрипт bash запрашивает переменные ПЛАТФОРМЫ, СРЕДЫ ТЕСТИРОВАНИЯ, ЭЛЕКТРОННОЙ ПОЧТЫ, ПАРОЛЯ. При сохранении эти переменные настраивают вызов нашего веб-приложения для запуска задачи rake для создания нового пользователя. После создания электронная почта и ПАРОЛЬ передаются в команды сборки для ios/Android, к которым можно получить доступ в Detox в качестве строковых констант, используемых для входа в систему и доступа к приложению. Переменные определены, как в приведенном выше примере, и успешно работали в прошлом, но таинственным образом перестали работать вообще и возвращаются неопределенными.
4. Я думаю, что на самом деле это может быть проблемой с детоксикацией/шуткой-цирком/метро. Узел принимает переменные bash и добавляет их в ENV, как и ожидалось. По какой-то причине они не берут переданные переменные из моего сценария оболочки. Я не знаю, что я мог бы изменить, чтобы повлиять на это.
Ответ №2:
Я все понял. Недавно я изменил свой сценарий bash, чтобы считывать значения переменных, а затем передавать их при вызове сборки. Оказывается, их нужно передавать, когда я вызываю сам скрипт. Поэтому я решил проблему, вложив скрипт в другой, который считывает переменные, а затем передает их соответствующим образом.
Любое объяснение того, почему эта вложенность скриптов работает, а не один скрипт, будет определенно оценено.