React Native:.env文件值不会通过react-native-config读取

hfwmuf9z  于 2023-10-22  发布在  React
关注(0)|答案(2)|浏览(142)

我正在用纯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=prod
  • isDev本身并不显示为字符串“错误信息:“-所以它是某种显示为空白但计算结果为true的值
  • testEnvString也不会显示在显示的组件中

我在这里的设置中错过了什么吗?
附录:我正在iOS模拟器上测试(我还不关心Android),使用npm start

sc4hvdpw

sc4hvdpw1#

我看到你正在使用Expo,所以它的文档提到了如果你要公开显示环境变量,在这里使用process.env.EXPO_PUBLIC_[VARNAME]引用。

k4aesqcs

k4aesqcs2#

尝试清理您的iOS构建,然后重建。根据我的经验,.env或对.env的更改直到项目完全从头开始重建时才加载。
react-native-clean-project是执行清洁任务的方便工具。按照说明安装,运行npm run clean,并只回答“Wipe iOS build folder”(擦除iOS构建文件夹)。清理完成后,重新构建应用程序,您将看到值.env
使用react-native-clean-project的一个警告是它更倾向于交互式提示。有非交互式的标志,但它们非常缺乏。因此,如果您想以非交互方式进行清理,请运行以下命令(从此处复制):

rm -rf ios/build && (killall Xcode || true) && xcrun -k && cd ios && xcodebuild -alltargets clean && cd .. && rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache" && rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang.$(whoami)/ModuleCache" && rm -fr ~/Library/Developer/Xcode/DerivedData/ && rm -fr ~/Library/Caches/com.apple.dt.Xcode/

相关问题