React Native:process.env只有NODE_ENV

Sup*_*agi 5 javascript environment-variables node.js reactjs react-native

我在构建本机应用程序时(在Windows上)设置环境变量:

SET APP_ENV=dev & react-native run-android
Run Code Online (Sandbox Code Playgroud)

echo %APP_ENV% 返回'dev'

但是,当我在JS文件中记录process.env对象时,只会得到:

{
  NODE_ENV: "development"
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以访问通过命令提示符设置的环境变量?

小智 5

重要的是要知道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

  • 您链接的 github 页面特别指出:“请记住,此模块不会混淆或加密打包的秘密,因此不要将敏感密钥存储在 .env 中。基本上不可能阻止用户对移动应用程序秘密进行逆向工程,因此请设计您的应用程序(和 API)要考虑到这一点。” 因此,如果期望的结果是有一个安全的地方来写入敏感信息,那么这个库就没有帮助,对吧? (2认同)

Hus*_*urd 5

你应该安装这个插件 babel 插件

npm install babel-plugin-transform-inline-environment-variables --save-dev
Run Code Online (Sandbox Code Playgroud)

然后将其添加到插件部分的 babel 配置(.babelrc、babel.config.js)中

{
  "plugins": [
    ["transform-inline-environment-variables", {
      "include": [
        "NODE_ENV"
      ]
    }]
  ]
}
Run Code Online (Sandbox Code Playgroud)

然后当你通过内联传递变量时

API_KEY=dev & react-native run-android
Run Code Online (Sandbox Code Playgroud)

你应该通过

process.env.API_KEY
Run Code Online (Sandbox Code Playgroud)

价值将是 dev

这在 Mac 终端上对我有用,希望它能回答你的问题

  • RN 0.68.1 不起作用 (2认同)