我在构建我的react-native应用程序(在Windows上)时设置了一个环境变量:
SET APP_ENV=dev & react-native run-android
echo %APP_ENV%
返回'dev'
但是,当我在js文件中登录process.env对象时,我只会得到:
{
NODE_ENV: "development"
}
是否有其他方法可以通过命令提示符设置环境变量?
重要的是要知道环境中的React-Native应用程序在设备(或模拟器)上运行更像浏览器,而不是node.js过程。
对于依赖process.env.NODE_ENV
进行优化的Node.js库的交叉兼容,React-Nativate将process
全局变量与env.NODE_ENV
添加。
如果要将自定义常数传递给反应,则可以使用:https://github.com/luggit/react-native-config
您应该安装此插件babel插件
npm install babel-plugin-transform-inline-environment-variables --save-dev
然后将其添加到您的babel config(.babelrc,babel.config.js)
{
"plugins": [
["transform-inline-environment-variables", {
"include": [
"NODE_ENV"
]
}]
]
}
然后,当您将变量通过内联
时API_KEY=dev && react-native run-android
您应该通过
获得它process.env.API_KEY
,该值将为dev
在Mac终端上为我工作,希望它回答您的问题
编辑:我添加了一个"双"因为只有一个不起作用。
我发现解决此问题的最简单方法是使用react-native-config
库,您可以在此处查看。
- 安装库:
$ yarn add react-native-config
- 用内容创建您的
.env
文件。例如:
GOOGLE_MAPS_API_KEY=abcdefgh
- 从
react-native-config
导入Config
并使用您的变量。
import Config from "react-native-config";
...
console.log('ENV:', Config.GOOGLE_MAPS_API_KEY); // ENV: abcdefgh
P.S。:安装包装后,您需要运行npx pod-install
自动链接它,或者如果您的React本机版本年龄在0.60中,请按照库中的说明手动链接它。
在这里这些答案以及反应本机博览会环境变量,但我发现了反应态,
。它做到了:
- 终端:
yarn add react-native-dotenv --dev
- 在
babel.config.js
(或.babelrc
)中:将"module:react-native-dotenv"
添加到plugins
- 在您的组件中,
import { REST_API_KEY } from "@env";
在顶部 - 在您的组件中,用作
alert(REST_API_KEY);
当然,使用alert
,这是一个虚拟示例:)
添加 babel-plugin-transform-inline-environment-variables
npm install babel-plugin-transform-inline-environment-variables --save-dev
babel.config.js:
{
"plugins": [
["transform-inline-environment-variables"],
]
}
请勿添加"include": ["NODE_ENV"]
然后运行API_KEY=testKey && react-native start
然后,您可以通过process.env.API_KEY
,
API_KEY
但是console.log(process.env)
仅显示{NODE_ENV: "development"}
,不包含API_KEY