Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 全局变量在React Native-Expo中不起作用_Reactjs_React Native_Dotenv - Fatal编程技术网

Reactjs 全局变量在React Native-Expo中不起作用

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

嗨,伙计们,我尝试用file.env创建全局变量,但我用的不是react native expo 我编写了process.env.API_URL,但没有找到这个变量。我要为工作做什么

我失去信心了

我读书,但不为我工作。 我需要帮助

如果您已在托管服务器中安装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';

如果您已在托管服务器中安装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
中的第一行代码是to
require('fs')
,这是react native中不可用的节点模块

无论如何,我最终创建了一个新的上下文来处理环境变量。我没有根据环境自动导入变量的逻辑,但这只需注释一行即可

使用变量创建一个JSON文件,将其导入到上下文中,并将其放置在
app.js
return的顶部,允许应用程序中的所有内容使用它。从那里,像导入任何其他上下文一样,使用
useContext()
导入它,您就可以访问所有变量

编辑:在反复发布之后,我决定只在应用程序测试中使用生产变量。这一点都不理想,但我确信许多人的处境与我相同,变量的唯一真正区别是API的路由名称(本地测试服务器与生产服务器)。不幸的是,iOS和Android都不支持http请求,或者不编辑配置文件而使用自签名证书的https请求。如果您使用的是Expo托管流,则这些配置文件不可用。因此,我唯一的选择就是简单地在生产API上进行测试。幸运的是,我有很好的日志可供参考,API本身相当成熟,并且通过web React应用程序经受了大量测试


如果有人有更好的解决方案,我很想听听。

我在让环境变量工作时遇到了很多问题。奇怪的是,最受推荐的包是
react native dotenv
,而
index.js
中的第一行代码是to
require('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本机库;这是一个巴别塔插件。让我知道它是否适合你。