使用 EAS 反应本机 Expo 环境变量

mar*_*oid 8 environment-variables react-native expo

我有一个密钥需要在我的应用程序中使用。在网络上,我会使用 .env 文件,但使用React Native 和 Expo

我想使用EAS Build,并找到了以下文档EAS变量文档

这提供了有关将“秘密”添加到 eas.json 文件的信息,但我无法找到 2 件重要的事情:

使用什么代码来访问开发和生产环境中的秘密变量。

我认为在生产中代码将是“process.env.SECRET_KEY”,并希望相同的代码适用于开发环境,但我不确定如何让开发中的 process.env 填充 SECRET_KEY。

当我在应用程序中使用 console.log(process.env) 时,我只得到 NODE_ENV: "development"。

我的想法是,许多应用程序都需要某种秘密信息,因此任何有关最佳实践的想法或此时任何使其发挥作用的方法都可以!

mar*_*oid 14

我能够让环境(秘密)变量与 eas 构建过程一起工作。

我确信还有其他方法可以实现此目的,但是这是我采取的方法:

我选择使用开发环境.env文件和eas 构建命令。eas secret:create

首先,您需要使用 eas cli 为您的项目创建一个秘密。 EAS秘密命令

然后,使用您的秘密创建 .env 文件。确保它与为 eas 创建的秘密具有相同的拼写。

然后,您将使用app.config.js文件注入机密,以便您的代码可以访问它。注意:我发现我需要删除该app.json文件。我将所有配置从app.json移至app.config.js.

npm install dotenv另请记住在终端上运行以将 dotenv 添加到您的项目中。

// the dotenv/config will read your .env file 
// and merge it with process.env data
// This is just for the builds that happen outside of eas
import "dotenv/config";

// the secrets created with eas secret:create will
// be merged with process.env during eas builds
const secretKey = process.env.SECRET_KEY;

export default {
  name: "TV Tracker",
  slug: "tv-tracker",
  scheme: "tvtracker",
...
  // THIS IS WHAT WE READ IN THE CODE
  // uses the expo constants package
  extra: {
    secretKey: secretKey,
  },
};
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用 expo-constants 模块读取SecretKey 。

import Constants from "expo-constants";
...

let secretKey = Constants.expoConfig.extra.secretKey;
Run Code Online (Sandbox Code Playgroud)

  • 另请记住在终端上运行 npm install dotenv 以将 dotenv 添加到您的项目中。 (2认同)