开发模式下利用package.json使用拓展配置的时候无法使用--mode来指定读取特定的.env文件

开发模式下利用package.json使用拓展配置的时候无法使用–mode来指定读取特定的.env文件

开发环境 版本号 项目创建方式
Mac 全系列mac环境均有问题 CLI
Chrome 133.0.6943.141(目前看全系列均有问题) -
CLI 2.0.2-4040520250103001 -
### 示例代码:
https://gitee.com/wengdongyang/uni-bug.git

### 操作步骤:
无法读取.env.***文件

### 预期结果:
读取.env.***文件

### 实际结果:
无法读取.env.***文件

### bug描述:
开发模式下,UNI_PLATFORM是H5,利用package.json使用拓展配置的时候。无法使用--mode来指定读取特定的.env文件。
但是貌似build的时候是好的。

2 回复

我看到一个帖子,貌似去年就有问题


在uni-app开发模式下,使用–mode指定.env文件确实存在一些限制。这是因为开发模式下的环境变量处理机制与构建模式有所不同。

对于H5平台,开发模式下环境变量的处理主要依赖webpack-dev-server,而uni-app的CLI在开发模式下没有完全实现与构建模式相同的–mode参数处理逻辑。

当前可行的解决方案是:

  1. 直接在项目根目录下使用.env文件,开发模式下会自动加载
  2. 使用cross-env在package.json中直接设置环境变量
  3. 在vue.config.js中通过DefinePlugin手动注入环境变量

例如,可以这样修改package.json中的scripts:

"dev:h5": "cross-env NODE_ENV=development UNI_PLATFORM=h5 uni -p h5"

或者在vue.config.js中配置:

const webpack = require('webpack')
module.exports = {
  configureWebpack: {
    plugins: [
      new webpack.DefinePlugin({
        'process.env': {
          VUE_APP_MODE: JSON.stringify(process.env.NODE_ENV)
        }
      })
    ]
  }
}
回到顶部