如何在React Native App中管理登台和生产环境

时间:2019-08-09 09:52:47

标签: react-native

我已经准备好一个反应本机应用程序,并且可以运行,但是该应用程序指向产品api,因此为了避免出现问题,我希望她将其指向其余的api,因此如何重新配置​​它,我只有一个环境文件。包含URL api的js,此文件在API服务中调用

我尝试了react-native配置,但是不知道如何使它工作,

我只想复制该环境文件,因为他包含所有必需的URL,所以我想拥有一个名为envProd的文件和另一个名为envStaging的文件,它们应该相似,唯一不同的部分是我api的URL,因此,当我要运行该应用程序时,我会精确选择要与哪个文件一起运行

4 个答案:

答案 0 :(得分:0)

如果API URL是唯一的区别,则无需创建两个单独的配置文件。相反,您可以使用JavaScript中的内置__DEV__全局变量来确定您是否正在使用React Native打包程序(开发模式)(生产模式)。

参考:https://facebook.github.io/react-native/docs/javascript-environment.html

所以,如下所示。

var apiURL = __DEV__ == true ? 'development.api.com' : 'prod.api.com';

答案 1 :(得分:0)

我发现交换环境很难管理。

__DEV__非常适合开发中的本地禁用内容。虽然不适用于任何构建。

对于登台还是生产,似乎最好配置react-native-config。不幸的是,除了很难配置二进制文件之外,还需要针对每种环境分别重新编译二进制文件。这意味着-一次更新-两次构建并上传到您使用的任何提供程序。如果您也使用类似codepush的方法,它将变得更加复杂。

可能的解决方案

在您的应用程序中创建隐藏功能,该功能可从应用程序内部切换环境。这样,您就可以构建一个版本,并将其交给测试人员。他们将env切换到暂存,以后您只需要将其升级为生产版本即可。

这可能就像在某处的空白处轻按10次-您越有创意,就越好:)

祝你好运

答案 2 :(得分:0)

const _Environments = {
  production: {
    API_BASE: 'https://api.test.com/',
    USERNAME: 'admin',
    PASSWORD: '1234',
  },
  development: {
    API_BASE: 'https://dev.api.test.com/',
    USERNAME: 'admin',
    PASSWORD: '1234',
  },
};

function getEnvironment() {
  // Insert logic here to get the current platform (e.g. staging, production, etc)
  var platform = __DEV__ ? 'development' : 'production';

  // ...now return the correct environment
  return _Environments[platform];
}

export const Environment = getEnvironment();

答案 3 :(得分:0)

尝试this。使用yargs可以将静态import内容替换为动态脚本。