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

Expo应用本地Xcode归档时,如何切换test环境并配置NODE_ENV

解决Xcode归档时切换Test环境并自动更新配置的方案

1. 将静态配置文件改为动态JS格式

把app.config.json重命名为app.config.js,通过JS代码读取环境变量生成动态配置。先确保安装dotenv依赖:

npm install dotenv --save-dev
# 或 yarn add dotenv -D

示例app.config.js内容:

require('dotenv').config({ path: `.env.${process.env.NODE_ENV || 'development'}` });

module.exports = {
  expo: {
    name: process.env.APP_NAME,
    slug: process.env.APP_SLUG,
    ios: {
      bundleIdentifier: process.env.IOS_BUNDLE_ID,
    },
    // 其他所有需要根据环境变更的配置项,均用process.env.XXX替换硬编码值
  },
};

2. 配置Xcode归档脚本,强制设置NODE_ENV为test

打开iOS工程目录下的Xcode项目,按以下步骤操作:

  • 选中项目根节点,切换到Build Phases标签页
  • 点击左上角+号,选择New Run Script Phase
  • 将该脚本拖到Dependencies之后、Compile Sources之前
  • 在脚本输入框中填写:
export NODE_ENV=test
echo "NODE_ENV set to $NODE_ENV for archive"

这样Xcode执行归档操作时,会先将环境变量设为test,确保app.config.js读取.env.test中的配置。

3. 验证配置生效

可在app.config.js中添加调试代码,确认环境变量加载正确:

console.log(`Loaded config for environment: ${process.env.NODE_ENV}`);

执行Xcode Build操作,查看控制台输出,确认NODE_ENV为test且对应环境的配置参数已加载。

4. 避免prebuild重置脚本(可选)

若使用expo prebuild生成iOS工程,每次prebuild会重置Xcode配置,可在app.config.js中添加自动生成脚本的配置:

module.exports = {
  expo: {
    // 其他配置
    ios: {
      buildPhases: [
        {
          name: 'Set NODE_ENV for Test Archive',
          script: 'export NODE_ENV=test\necho "NODE_ENV set to $NODE_ENV"',
          executionPosition: 'before_compile',
        },
      ],
    },
  },
};

后续执行expo prebuild时,会自动在Xcode工程中添加该Run Script。

内容的提问来源于stack exchange,提问作者ashfaq.p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:20:05