我已经准备好一个反应本机应用程序,并且可以运行,但是该应用程序指向产品api,因此为了避免出现问题,我希望她将其指向其余的api,因此如何重新配置它,我只有一个环境文件。包含URL api的js,此文件在API服务中调用
我尝试了react-native配置,但是不知道如何使它工作,
我只想复制该环境文件,因为他包含所有必需的URL,所以我想拥有一个名为envProd的文件和另一个名为envStaging
的文件,它们应该相似,唯一不同的部分是我api的URL,因此,当我要运行该应用程序时,我会精确选择要与哪个文件一起运行
答案 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
内容替换为动态脚本。