【问题标题】:React Native with Expo: how to use a .env.local config file?React Native with Expo:如何使用 .env.local 配置文件?
【发布时间】:2018-09-27 23:11:30
【问题描述】:

我有一个通过 expo 运行的 react-native 应用程序(expo 27.1.1 和 react-native 0.55.4)。

我想使用 .env.local 文件,我发现的唯一东西是使用 babel-plugin-inline-dotenv,但它加载 .env 文件的内容而不是 .env.local 文件(我如果文件存在,则希望它加载 .env.local 的内容,否则 .env)。

是否有其他类似的插件允许这样做?

【问题讨论】:

标签: react-native environment-variables local expo


【解决方案1】:

您好,您可以使用 Expo“额外”配置属性。在 expo 下的 app.json 中添加这样的 myApiKey:

{
  "expo": {
    "name": "login-app",
    "slug": "login-app",
    "privacy": "public",
    "sdkVersion": "32.0.0",
    "platforms": [
      "ios",
      "android"
    ],
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true
    },
    "extra": {
      "myApiKey" : "1234"
    }
  }
}

而且您可以在应用中的任何位置使用它,而无需导入任何文件。像这样使用它:

Expo.Constants.manifest.extra.myApiKey

【讨论】:

  • 这样做的坏事是必须提交这些文件,因此必须提交 env var 更改。
  • 必须提交吗?可以使用 app.js.sample,然后提交。
【解决方案2】:

我终于找到了解决办法:

用这个添加一个文件 env.js:

import Constants from "expo-constants";

function getEnvVars() {
  if (__DEV__) {
    return returnEnvVars();
  } else {
      return new Promise(resolve => {
          resolve(Constants.manifest.extra);
      });
  }
}

async function returnEnvVars() {
  return await import("envLocal.js");
}

export default getEnvVars;

然后你可以像这样将你的环境变量放在文件envLocal.js中:

export default {
  test: "localhost"
};

以及app.json 文件中的 prod 变量,如下所示:

{
  "expo": {
    "extra": {
      "test": "prod"
   }
}

终于可以这样称呼了:

import getEnvVars from "../environment";
getEnvVars().then(vars => console.log(vars));

【讨论】:

    猜你喜欢
    • 2022-08-24
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 2022-09-29
    • 2020-10-09
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多