You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向本地运行的生产模式应用传递环境变量?

解决Expo本地生产模式环境变量不生效及调试问题

环境变量不生效的修复方案

方法1:通过Expo配置文件注入变量(推荐)

这种方式更贴合Expo生态,开发/生产模式都能稳定读取变量:

  1. 安装dotenv依赖:
npm install dotenv --save
  1. 在项目根目录的expo.config.js中加载目标.env文件,并将变量配置到extra字段:
require('dotenv').config({ path: '.env.production.local' });

module.exports = {
  expo: {
    extra: {
      API_URL: process.env.API_URL,
      // 按需添加其他需要的环境变量
    },
    // 保留项目原有配置
  },
};
  1. 在代码中通过expo-constants读取变量:
import Constants from 'expo-constants';
const apiUrl = Constants.expoConfig.extra.API_URL;
  1. 直接启动生产模式即可,无需依赖dotenv-cli:
npx expo start --no-dev --minify

方法2:用babel插件替换process.env

如果习惯用process.env读取变量,需要让babel在打包时静态替换变量值:

  1. 安装babel插件:
npm install babel-plugin-transform-inline-environment-variables --save-dev
  1. 修改babel.config.js:
module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      ['transform-inline-environment-variables', {
        include: ['API_URL', 'YOUR_OTHER_VAR'] // 列出所有需要替换的变量名
      }]
    ],
  };
};
  1. 重新执行你的dotenv-cli命令:
dotenv -e .env.production.local -- npx expo start --no-dev --minify

方法3:命令行直接导出变量(临时方案)

无需额外工具,启动前直接在命令行导出变量:

  • Bash/Zsh环境:
source .env.production.local && npx expo start --no-dev --minify
  • Windows CMD环境:
for /f "tokens=*" %i in (.env.production.local) do set %i && npx expo start --no-dev --minify

生产模式崩溃调试技巧

不用每次构建应用或依赖EAS Update,你可以:

  • 用npx expo start --no-dev --minify启动本地生产模式,该模式已经模拟了生产环境的打包逻辑和运行环境
  • 打开Expo开发者菜单(摇晃设备或按Ctrl+M),选择「Debug Remote JS」,通过Chrome DevTools查看崩溃调用栈、变量值等信息
  • 修改代码后,只需重启上述启动命令即可,无需重新构建

内容的提问来源于stack exchange,提问作者Mike K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:32:33