Expo环境下iOS打包成功,Android无法解析@env模块求助
Expo Android打包无法解析@env的解决方案
确认Expo项目类型与插件兼容性
Expo的managed workflow(纯Expo项目)对第三方babel插件的支持有限,react-native-dotenv可能无法正常适配Android打包流程,建议优先使用Expo官方环境变量方案;若为bare workflow(原生混合项目),需确保依赖安装完整且配置正确。修正babel.config.js配置
确保配置正确注入react-native-dotenv插件,示例配置如下:module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: [ ['module:react-native-dotenv', { moduleName: '@env', path: '.env', allowUndefined: true }] ] }; };清除缓存后重新构建
- 执行
expo r -c清除Expo缓存,再尝试打包Android - 若为bare workflow,进入
android目录执行./gradlew clean,再重新构建项目
- 执行
切换至Expo官方环境变量方案(推荐)
无需依赖第三方插件,Expo原生支持环境变量:- 在
.env文件中定义变量,前缀需为EXPO_PUBLIC_,例如:EXPO_PUBLIC_TEST_KEY=your_api_key - 在App.js中通过
expo-constants获取:import Constants from 'expo-constants'; const TEST_KEY = Constants.expoConfig.env.EXPO_PUBLIC_TEST_KEY;
该方案完全适配Expo的iOS/Android打包流程,不会出现模块解析问题。
- 在
Bare workflow额外检查
- 确认已安装依赖:
npm install react-native-dotenv --save-dev - 检查
android/app/build.gradle是否未覆盖babel相关配置,确保插件能正常生效
- 确认已安装依赖:
内容的提问来源于stack exchange,提问作者PDD123
相关产品推荐
相关产品推荐

