React Native: process.env has only NODE_ENV



我在构建我的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库,您可以在此处查看。

  1. 安装库:
$ yarn add react-native-config
  1. 用内容创建您的.env文件。例如:
GOOGLE_MAPS_API_KEY=abcdefgh
  1. 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中,请按照库中的说明手动链接它。

在这里这些答案以及反应本机博览会环境变量,但我发现了反应态,

它做到了:

  1. 终端:yarn add react-native-dotenv --dev
  2. babel.config.js(或.babelrc)中:将"module:react-native-dotenv"添加到plugins
  3. 在您的组件中, import { REST_API_KEY } from "@env";在顶部
  4. 在您的组件中,用作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

很奇怪

相关内容

  • 没有找到相关文章

最新更新