我的项目有一个依赖于要设置的环境变量的节点依赖项,代码很简单,如const KEY = process.env.SOME_KEY
。 我知道react-native不支持传统的环境变量。关于react-native自定义依赖关系的环境变量
什么是de选项来满足这种需求,并使此代码工作?假设我无法控制依赖关系的代码。
我的项目有一个依赖于要设置的环境变量的节点依赖项,代码很简单,如const KEY = process.env.SOME_KEY
。 我知道react-native不支持传统的环境变量。关于react-native自定义依赖关系的环境变量
什么是de选项来满足这种需求,并使此代码工作?假设我无法控制依赖关系的代码。
这里的解决方案非常简单,您应该使用自定义的babel变换器,在代码转换步骤(此阶段可以访问环境变量)中将代码中的所有process.env.
调用替换为实际env值。转换也适用于您的应用程序的依赖关系,这意味着您可以对第三方代码进行必要的修改而不实际更改它。
为了做到这一点,首先需要创建一个.babelrc
文件类似下面,并把它放在你的项目的根目录:
{
"presets": ["react-native"],
"plugins": [
"transform-inline-environment-variables"
]
}
一旦这样做了,去故宫安装babel-preset-react-native
和babel-plugin-transform-inline-environment-variables
。
最后,重新运行react-native start
(基本上重新启动打包程序),所有process.env调用都将被替换。
谢谢。我在http://stackoverflow.com/a/37823398/1666071找到了相同的答案。如果您可以详细说明一些问题并解释由于RN设置NODE_ENV的方式必须完成的解决方法,我愿意选择您的答案。 – enapupe
上面提到的问题和与它相关的PR已经合并到master中,为了让它工作,我没有执行除了这里描述的步骤之外的任何额外步骤。 –
如果您喜欢可维护的应用程序,我的个人建议是避免使用Babel。 –
你有没有试过这个? [react-native-config](https://www.npmjs.com/package/react-native-config) – LuisPinto
@LuisPinto当你控制代码时,这很好,我不知道。 – enapupe