React Native Expo Переменные среды - PullRequest
1 голос
/ 07 октября 2019

Итак, я доволен концепцией переменных среды, описанной в этой и других статьях. https://www.freecodecamp.org/news/how-to-gracefully-use-environment-variables-in-a-react-native-app/

Отлично, у меня сохранено SOMETHING = "что-то", поэтому я могу просто использовать env. ЧТО-ТО или что-то еще

Часть, в которой я немного потерян на , - это место, где вы храните живые переменные ?

Я бы предпочел не делать подобное решение, как кажетсявы по-прежнему храните свои ключи в открытом доступе и выбираете их только в зависимости от среды с помощью операторов if

Управление средой с помощью expo реакции native

Например, с помощью ExpressРазвертывание приложения у нас есть, мы указываем

let endPointURL = env.endPointURL

и затем сохраняем versoin этой переменной локально, и когда оно находится в AWS, оно переопределяется серверами AWS, как объяснено здесь

Мне просто интересно, существует ли что-то подобное для сборок Android и iOS (в соответствующих магазинах) или через Expo?

Спасибо всем

1 Ответ

1 голос
/ 07 октября 2019

Честно говоря, я думаю, что путь к этому немного глуп. Возможно, есть лучший способ сделать это, но я думаю, что я следовал их рекомендациям по документации.

https://docs.expo.io/versions/latest/distribution/release-channels/#using-release-channels-for-environment-variable-configuration

У них есть фрагмент кода, предлагающий создать функцию для просмотравыпустить саму конфигурацию.

Я интерпретировал это так, что вы можете сделать что-то вроде приведенного ниже кода и сохранить переменные окружения в файле variables.js и получить переменные окружения как таковые.

import Constants from 'expo-constants';

export const prodUrl = "https://someapp.herokuapp.com";

const ENV = {
  dev: {
    apiUrl: "http://localhost:3000"
  },
  staging: {
    apiUrl: prodUrl
  },
  prod: {
    apiUrl: prodUrl
  }
};

function getEnvVars(env = "") {
  if (env === null || env === undefined || env === "") return ENV.dev;
  if (env.indexOf("dev") !== -1) return ENV.dev;
  if (env.indexOf("staging") !== -1) return ENV.staging;
  if (env.indexOf("prod") !== -1) return ENV.prod;
}

export default getEnvVars(Constants.manifest.releaseChannel);

...