Как получить доступ к переменным среды, расположенным в .env — React Native

в настоящее время у меня есть .envфайл, в котором я сохраняю ключи API и т. д. (не фактические ключи в приведенном ниже примере):

      API_URL=https://www.example.si/3000
IOS_API_KEY=738d7hfu3hffsjfsd
STRIPE_KEY=pk_fh843f483ff3f43f34
APP_ID=pk_fh843f483ff3f43f34

Мне нужно получить доступ к этим ключам в моем AppDelegate.mфайл.

Я пробовал следующее:

NSString *AppID = @(getenv("APP_ID"));

Но это не сработало. Я получаю сообщение об ошибке: "***+[NSString stringWithUTF8String:] NULL cString" .

Я не могу использовать переменную как @"AppID"где я хочу передать его. Любые идеи о том, как решить эту проблему, будут полезны.

3 ответа

Использовать "Process.env.{{variable_name}}"для доступа к переменной среды.

В итоге я использовал для этого библиотеку под названием react-native-config :

https://github.com/luggit/react-native-config

и это работает очень хорошо. Он также имеет систему, позволяющую избежать отложенного (на основе состояния) кэширования, поэтому, как только вы сохраняете файл, нет возможности вспомнить предыдущее состояние файла. .envфайл.

Для тех, кто использует EXPO, есть два варианта, как описано на docs.expo.dev/guides/environment-variables/

Вот вариант, который я выбрал для своего проекта:

Используяextraполе

Настройте свойapp.config.jsс этим:

      module.exports = {
  name: 'MyApp',
  version: '1.0.0',
  extra: {
    apiUrl: process.env.API_URL,
  },
};

Затем запуститеAPI_URL="https://production.example.com" npx expo start. Если вы используете Windows, вы можете использовать что-то вроде https://www.npmjs.com/package/cross-env , чтобы иметь возможность устанавливать такие переменные.

Теперь вы должны иметь доступ к своим переменным env:

      import Constants from 'expo-constants';

const apiUrl = Constants.expoConfig?.extra?.apiUrl;
Другие вопросы по тегам