web-dev-qa-db-ja.com

ReactネイティブExpo環境変数

したがって、この記事や他の記事で説明されている環境変数の概念に満足しています https://www.freecodecamp.org/news/how-to-gracefully-use-environment-variables-in-a-反応ネイティブアプリ/

すばらしいです。SOMETHING= "something"を保存しているので、env.SOMETHINGなどを使用できます

私が少し迷っている部分は、ライブ変数を保持する場所ですか?

あなたはまだあなたのキーをかなり公開していて、ifステートメントを使って環境に基づいて選択しているように見えるので、私はこのような解決策を実行したくない

expo react nativeで環境を管理する

たとえば、私たちが持っているExpress Appデプロイメントでは、

let endPointURL = env.endPointURL

そして、その変数のversoinをローカルに保持し、それがAWSに配置されると、説明されているようにAWSサーバーによって上書きされます here

AndroidおよびiOSビルド(それぞれのストアで)またはExpoを介して、そのようなものが存在するのだろうか?

ありがとうございます

3
Ash Hogarth

より簡単な方法は、関数の代わりにenvオブジェクトをエクスポートすることです:

import Constants from 'expo-constants';
import { Platform } from "react-native";

const localhost =
 Platform.OS === "ios" ? "localhost:8080" : "10.0.2.2:8080";


const ENV = {
    dev: {
      apiUrl: localhost,
      amplitudeApiKey: null,
    },
    staging: {
      apiUrl: "[your.staging.api.here]",
      amplitudeApiKey: "[Enter your key here]",
      // Add other keys you want here
    },
    prod: {
      apiUrl: "[your.production.api.here]",
      amplitudeApiKey: "[Enter your key here]",
      // Add other keys you want here
    }
};

const getEnvVars = (env = Constants.manifest.releaseChannel) => {
  if (env === null || env === undefined || env === "" || env.indexOf("dev") !== -1) return ENV.dev;
  if (env.indexOf("staging") !== -1) return ENV.staging;
  if (env.indexOf("prod") !== -1) return ENV.prod;
}

const selectedENV = getEnvVars();

export default selectedENV;
// Import
import env from '..xxx/utility/env';
1
Arbaaz Dossani