Reactjs 全局变量在React Native-Expo中不起作用
嗨,伙计们,我尝试用file.env创建全局变量,但我用的不是react native expo 我编写了process.env.API_URL,但没有找到这个变量。我要为工作做什么 我失去信心了 我读书,但不为我工作。 我需要帮助 如果您已在托管服务器中安装expo constants模块 工作流项目,您可以访问应用程序清单的属性。什么之中的一个 这些属性是.env属性,该属性仅为 运行expo start时可用。顾名思义,它包含 一些系统定义的环境变量。为了安全 原因,仅以Reactjs 全局变量在React Native-Expo中不起作用,reactjs,react-native,dotenv,Reactjs,React Native,Dotenv,嗨,伙计们,我尝试用file.env创建全局变量,但我用的不是react native expo 我编写了process.env.API_URL,但没有找到这个变量。我要为工作做什么 我失去信心了 我读书,但不为我工作。 我需要帮助 如果您已在托管服务器中安装expo constants模块 工作流项目,您可以访问应用程序清单的属性。什么之中的一个 这些属性是.env属性,该属性仅为 运行expo start时可用。顾名思义,它包含 一些系统定义的环境变量。为了安全 原因,仅以REACT\u
REACT\u NATIVE\u
或EXPO\u
可用
如果希望API url可用,则需要在其前面加上REACT\u NATIVE\u
或EXPO\u
明确的
REACT_NATIVE_API_URL=....
或
通过访问
process.env.REACT_NATIVE_API_URL
或
编辑
如果使用react native dotenv
模块
将env键值对添加到.env文件中
API_URL=....
现在将其导入到.js文件中
import { API_URL } from 'react-native-dotenv';
如果您已在托管服务器中安装expo constants模块
工作流项目,您可以访问应用程序清单的属性。什么之中的一个
这些属性是.env属性,该属性仅为
运行expo start时可用。顾名思义,它包含
一些系统定义的环境变量。为了安全
原因,仅以REACT\u NATIVE\u
或EXPO\u
可用
如果希望API url可用,则需要在其前面加上REACT\u NATIVE\u
或EXPO\u
明确的
REACT_NATIVE_API_URL=....
或
通过访问
process.env.REACT_NATIVE_API_URL
或
编辑
如果使用react native dotenv
模块
将env键值对添加到.env文件中
API_URL=....
现在将其导入到.js文件中
import { API_URL } from 'react-native-dotenv';
我在让环境变量工作时遇到了很多问题。奇怪的是,最受推荐的包是
react native dotenv
,而index.js
中的第一行代码是torequire('fs')
,这是react native中不可用的节点模块
无论如何,我最终创建了一个新的上下文来处理环境变量。我没有根据环境自动导入变量的逻辑,但这只需注释一行即可
使用变量创建一个JSON文件,将其导入到上下文中,并将其放置在app.js
return的顶部,允许应用程序中的所有内容使用它。从那里,像导入任何其他上下文一样,使用useContext()
导入它,您就可以访问所有变量
编辑:在反复发布之后,我决定只在应用程序测试中使用生产变量。这一点都不理想,但我确信许多人的处境与我相同,变量的唯一真正区别是API的路由名称(本地测试服务器与生产服务器)。不幸的是,iOS和Android都不支持http请求,或者不编辑配置文件而使用自签名证书的https请求。如果您使用的是Expo托管流,则这些配置文件不可用。因此,我唯一的选择就是简单地在生产API上进行测试。幸运的是,我有很好的日志可供参考,API本身相当成熟,并且通过web React应用程序经受了大量测试
如果有人有更好的解决方案,我很想听听。我在让环境变量工作时遇到了很多问题。奇怪的是,最受推荐的包是
react native dotenv
,而index.js
中的第一行代码是torequire('fs')
,这是react native中不可用的节点模块
无论如何,我最终创建了一个新的上下文来处理环境变量。我没有根据环境自动导入变量的逻辑,但这只需注释一行即可
使用变量创建一个JSON文件,将其导入到上下文中,并将其放置在app.js
return的顶部,允许应用程序中的所有内容使用它。从那里,像导入任何其他上下文一样,使用useContext()
导入它,您就可以访问所有变量
编辑:在反复发布之后,我决定只在应用程序测试中使用生产变量。这一点都不理想,但我确信许多人的处境与我相同,变量的唯一真正区别是API的路由名称(本地测试服务器与生产服务器)。不幸的是,iOS和Android都不支持http请求,或者不编辑配置文件而使用自签名证书的https请求。如果您使用的是Expo托管流,则这些配置文件不可用。因此,我唯一的选择就是简单地在生产API上进行测试。幸运的是,我有很好的日志可供参考,API本身相当成熟,并且通过web React应用程序经受了大量测试
如果有人有更好的解决方案,我很想听听。只有在我使用expo常量时才有效。我不使用这个。只有当我使用expo常量时才有效。我不用这个。嗨!
react native dotenv
的维护者require('fs')
之所以有效,是因为它不是react本机库;这是一个巴别塔插件。让我知道它是否适合你。嗨!react native dotenv
的维护者require('fs')
之所以有效,是因为它不是react本机库;这是一个巴别塔插件。让我知道它是否适合你。