SET APP_ENV=dev & react-native run-android
echo %APP_ENV%
返回的是 'dev'
但是当我在我的JS文件中记录 process.env 对象时,我只得到了:
{
NODE_ENV: "development"
}
有没有其他方法可以访问通过命令提示符设置的环境变量?
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-Native 添加了全局变量 process
以及 env.NODE_ENV
。
如果你想向 React-Native 传递自定义常量,可以使用:https://github.com/luggit/react-native-config
您应该安装这个Babel插件
npm install babel-plugin-transform-inline-environment-variables --save-dev
{
"plugins": [
["transform-inline-environment-variables", {
"include": [
"NODE_ENV"
]
}]
]
}
API_KEY=dev && react-native run-android
process.env.API_KEY
值将是dev
这在我的Mac终端上运行良好,希望它能回答你的问题。
编辑: 我添加了双“&”,因为只有一个不起作用。
include
数组中。 Babel插件会内联环境变量。它不是在process.env.API_KEY
上“可用”,而是在输出的JavaScript中,process.env.API_KEY
被替换为您的环境变量的字符串字面值。 - undefined我发现解决这个问题最简单的方法是使用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 Native版本早于0.60,则可以手动链接它,按照库中的说明进行操作。
这些答案,包括React Native Expo环境变量都没有解决问题,但是我找到了react-native-dotenv。
它终于解决了问题:
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
只是一个示例 :)
process.env
对象中,如果它不是只读的。 - KeitelDOGfrom '@env'
在 NextJS 的 Web 上也可以工作,所以很好,我不再需要 process.env
,并且使用相同的应用程序作为 NextJS 和 Native 的混合应用程序一切都运行良好。 - KeitelDOGeas
/原生应用程序构建时,获取环境变量没有问题吗? - Daniel Danielecki添加 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
。