开发模式下利用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参数处理逻辑。
当前可行的解决方案是:
- 直接在项目根目录下使用.env文件,开发模式下会自动加载
- 使用cross-env在package.json中直接设置环境变量
- 在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)
}
})
]
}
}