Перейти к основному содержимому

Переменные окружения

Переменные окружения позволяют хранить значения конфигурации — API-ключи, флаги функций, URL бэкенда — отдельно от кода. Они шифруются при хранении и вводятся в контейнер во время выполнения.

Зачем использовать переменные окружения?

  • Безопасность — API-ключи не попадают в исходный код и репозитории GitHub
  • Гибкость — изменяйте конфигурацию без редактирования и повторного развёртывания кода
  • Несколько сред — используйте разные значения для разработки и продакшена

Добавление переменных окружения

  1. Откройте проект в AppX
  2. Перейдите в Настройки проекта → Переменные окружения
  3. Нажмите Добавить переменную
  4. Введите ключ и значение
  5. Нажмите Сохранить

После сохранения нажмите Push, чтобы синхронизировать переменные с работающим контейнером (см. Применение переменных ниже).

Соглашение об именовании

Переменные окружения в Expo должны начинаться с EXPO_PUBLIC_, чтобы быть доступными в JavaScript-коде приложения:

EXPO_PUBLIC_API_URL=https://api.myapp.com
EXPO_PUBLIC_STRIPE_KEY=pk_live_...
EXPO_PUBLIC_FEATURE_DARK_MODE=true

Переменные без префикса EXPO_PUBLIC_ доступны только процессам сборки, но не runtime-коду приложения.

Использование переменных в коде

Доступ к переменным окружения в приложении:

const apiUrl = process.env.EXPO_PUBLIC_API_URL;
const stripeKey = process.env.EXPO_PUBLIC_STRIPE_KEY;

ИИ также может ссылаться на переменные окружения при генерации кода. Если вы определили EXPO_PUBLIC_API_URL, можно написать в чате: «Запрашивай данные пользователя из API, используя переменную окружения с URL API» — и AppX использует её правильно.

Редактирование переменных

  1. Перейдите в Настройки проекта → Переменные окружения
  2. Нажмите иконку карандаша у переменной, которую хотите изменить
  3. Обновите значение
  4. Нажмите Сохранить
  5. Нажмите Push to Container

Обнаружение переменных в коде

AppX может автоматически сканировать код проекта на наличие ссылок на переменные окружения, которые ещё не определены.

  1. Перейдите в Настройки проекта → Переменные окружения
  2. Нажмите Detect

AppX сканирует все файлы проекта на ссылки process.env.EXPO_PUBLIC_* и перечисляет все переменные, которые используются в коде, но ещё не определены. Вы можете добавить их прямо из результатов обнаружения.

Это особенно полезно после генерации ИИ — ИИ может ссылаться на переменные окружения, которые вы ещё не настроили. Запуск Detect гарантирует, что ничего не пропущено.

Применение переменных к контейнеру

После добавления или редактирования переменных нажмите Push, чтобы синхронизировать их с работающим контейнером. Контейнер кратко перезапускается (3–5 секунд) для загрузки новых значений.

подсказка

Кнопка Push синхронизирует все переменные окружения с контейнером сразу. Вы можете внести несколько изменений и применить их одним действием, а не делать push после каждой правки.

Удаление переменных

Нажмите иконку корзины рядом с переменной и подтвердите. Сделайте push в контейнер для применения.

предупреждение

Удаление переменной, на которую ссылается код, вызовет ошибки во время выполнения. Проверьте, где переменная используется в коде, перед её удалением.

Шифрование

Все значения переменных окружения зашифрованы при хранении с помощью AES-256. Значения никогда не хранятся в открытом виде в базе данных AppX. Они расшифровываются только при вводе в контейнер при запуске.

Значения переменных скрыты в интерфейсе AppX — по умолчанию отображаются как ••••••••. Нажмите иконку глаза для просмотра.

Лучшие практики

Используйте переменные окружения для:

  • API-ключей и токенов
  • URL бэкенда, различающихся между средами
  • Флагов функций
  • Учётных данных сторонних сервисов (Firebase, Stripe, Sentry и т. д.)

Не используйте переменные окружения для:

  • Больших объектов конфигурации (используйте вместо них файл конфигурации)
  • Данных, изменяющихся во время выполнения (используйте состояние приложения или базу данных)

Переменные окружения и GitHub

Если вы подключили репозиторий GitHub, ваши переменные окружения не отправляются в репозиторий. Они остаются в AppX. Когда кто-то клонирует проект, ему понадобятся собственные значения для конфиденциальных ключей.

Для совместной работы документируйте обязательные имена переменных (но не значения) в README.