我正在用纯React Native重建我的Expo应用程序,并试图弄清楚环境变量的情况。我正在尝试react-native-config,目前在“^1.5.1”上。我使用yarn add react-native-config
安装,然后我做了npx pod-install
。
下面是我的.env文件:
ENV_NAME=prod
TEST_ENV_VAR=hello
对于我的一个组件,我有这样的代码:
import Config from "react-native-config";
export function LoginScreen({ navigation }) {
...
const [isDev, setIsDev] = React.useState(Config.ENV_NAME === 'dev')
const [testEnvString, setTestEnvString] = useState(Config.TEST_ENV_VAR)
...
return (
...
{isDev ?
<View style={styles.row}>
<Text>Debug info: {isDev}</Text>
<Text>Test string: {testEnvString}</Text>
</View>
: null}
...
)
我的发现是:
isDev
的计算结果始终为true,即return()中的片段始终显示,即使.env文件具有ENV_NAME=prodisDev
本身并不显示为字符串“错误信息:“-所以它是某种显示为空白但计算结果为true的值testEnvString
也不会显示在显示的组件中
我在这里的设置中错过了什么吗?
附录:我正在iOS模拟器上测试(我还不关心Android),使用npm start
2条答案
按热度按时间sc4hvdpw1#
我看到你正在使用Expo,所以它的文档提到了如果你要公开显示环境变量,在这里使用
process.env.EXPO_PUBLIC_[VARNAME]
引用。k4aesqcs2#
尝试清理您的iOS构建,然后重建。根据我的经验,
.env
或对.env
的更改直到项目完全从头开始重建时才加载。react-native-clean-project是执行清洁任务的方便工具。按照说明安装,运行
npm run clean
,并只回答“Wipe iOS build folder”(擦除iOS构建文件夹)。清理完成后,重新构建应用程序,您将看到值.env
。使用react-native-clean-project的一个警告是它更倾向于交互式提示。有非交互式的标志,但它们非常缺乏。因此,如果您想以非交互方式进行清理,请运行以下命令(从此处复制):