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

为何指定UMI_ENV=dev后Ant Design Pro仍使用config.local.ts?

问题场景

项目目录结构:

.
└── config/
    ├── config.dev.ts
    ├── config.local.ts
    ├── config.ts
    └── defaultSettings.ts

package.json命令配置:

"ant:start:localapi": "cross-env REACT_APP_ENV=local UMI_ENV=local HTTPS=true MOCK=none umi dev",
"ant:start:devapi": "cross-env REACT_APP_ENV=dev UMI_ENV=dev HTTPS=true MOCK=none umi dev"

config.dev.ts内容:

// https://umijs.org/config/
import { defineConfig } from 'umi';

export default defineConfig({
  plugins: [
    'react-dev-inspector/plugins/umi/react-inspector',
  ],
  inspectorConfig: {
    exclude: [],
    babelPlugins: [],
    babelOptions: {},
  },
  define: {
    'process.env.UMI_ENV': process.env.UMI_ENV,
    ...
  },
});

运行ant:start:devapi命令时,已确认UMI_ENV被正确设置为dev,但Umi仍加载config.local.ts的配置,而非config.dev.ts。

排查与解决步骤
  • 先确认环境变量是否真的传递成功
    在config.ts中添加一行日志,启动项目后查看控制台输出:

    console.log('当前UMI_ENV:', process.env.UMI_ENV);
    

    或者直接在命令行验证cross-env的变量传递:

    • Windows:cross-env UMI_ENV=dev echo %UMI_ENV%
    • Mac/Linux:cross-env UMI_ENV=dev echo $UMI_ENV
      如果输出不是dev,说明cross-env没正确传递变量,尝试更新cross-env版本,或者换用系统原生的环境变量设置方式(比如Mac/Linux直接用UMI_ENV=dev umi dev,Windows用set UMI_ENV=dev && umi dev)。
  • 检查Umi配置加载优先级
    Umi的配置加载逻辑是:config.ts → config.[UMI_ENV].ts → config.local.ts,也就是说**config.local.ts会覆盖所有环境的配置**,不管你指定了什么UMI_ENV。如果不想让local配置干扰dev环境,有两种方式:

    1. 临时重命名config.local.ts(比如改成config.local.bak.ts),再启动dev命令测试;
    2. 设置环境变量UMI_LOCAL_ENV=none,禁用local配置加载,修改命令为:
      "ant:start:devapi": "cross-env REACT_APP_ENV=dev UMI_ENV=dev UMI_LOCAL_ENV=none HTTPS=true MOCK=none umi dev"
      
  • 清理Umi缓存
    Umi的缓存可能导致配置未更新,删除node_modules/.cache目录,或者启动时加上--no-cache参数:

    "ant:start:devapi": "cross-env REACT_APP_ENV=dev UMI_ENV=dev HTTPS=true MOCK=none umi dev --no-cache"
    
  • 验证配置生效情况
    在config.dev.ts和config.local.ts中分别添加独特的配置项,比如:
    // config.dev.ts

    export default defineConfig({
      ...
      title: 'Dev环境'
    });
    

    // config.local.ts

    export default defineConfig({
      ...
      title: 'Local环境'
    });
    

    启动后查看页面标题,就能直观判断哪个配置被加载。

内容的提问来源于stack exchange,提问作者Amr Shawki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:03:35