uni-app 自定义条件编译平台并增加环境变量其他js中不能访问process.env.UNI_SCRIPT vue.config.js中不能访问自行增加的环境变量
uni-app 自定义条件编译平台并增加环境变量其他js中不能访问process.env.UNI_SCRIPT vue.config.js中不能访问自行增加的环境变量
示例代码:
"uni-app": {
"scripts": {
"mp-ft": {
"title": "ft科技小程序",
"env": {
"UNI_PLATFORM": "mp-weixin",
"MY_TEST": "mp-ft"
},
"define": {
"MP-FT": true
}
}
}
}
在vue.config.js
中能访问到UNI_SCRIPT
、UNI_PLATFORM
,访问不到MY_TEST
;
其他js文件中访问不到UNI_SCRIPT
:
console.log('vue.config.js: ', process.env.UNI_SCRIPT, process.env.UNI_PLATFORM, process.env.MY_TEST) // vue.config.js: mp-ft mp-weixin undefined
console.log('other.js: ', process.env.UNI_SCRIPT, process.env.UNI_PLATFORM, process.env.MY_TEST) // other.js: undefined mp-weixin mp-ft
操作步骤:
- package.json中自定义条件编译平台并增加环境变量,然后在不同js文件中输出
预期结果:
- 应当获取到设置的对应值
实际结果:
- 其他js中不能访问
process.env.UNI_SCRIPT
vue.config.js
中不能访问自行增加的环境变量
bug描述:
自定义条件编译平台并增加环境变量,
其他js中不能访问process.env.UNI_SCRIPT
,
vue.config.js
中不能访问自行增加的环境变量。
复现demo见附件。
项目信息 | 值 |
---|---|
产品分类 | uniapp/小程序/微信 |
PC开发环境 | Windows |
PC开发环境版本 | 7 |
第三方开发者工具 | VSCode1.70.2 |
基础库版本号 | 2.0.2-4020420240722001 |
项目创建方式 | CLI |
CLI版本号 | 5.0.8 |
更多关于uni-app 自定义条件编译平台并增加环境变量其他js中不能访问process.env.UNI_SCRIPT vue.config.js中不能访问自行增加的环境变量的实战教程也可以访问 https://www.itying.com/category-93-b0.html
vue.config.js 可以直接访问 process.UNI_SCRIPT_ENV 可以获取到自定义的 env
业务代码可以参照下面示例代码
module.exports = {
chainWebpack: (config) => {
config.plugin(“define”).tap((args) => {
args[0] = args[0] || {};
args[0][“process.env”] = args[0][“process.env”] || {};
// 添加自定义全局变量
args[0].__TEST__ = JSON.stringify(process.UNI_SCRIPT_ENV);
return args;
});
},
}
代码中直接访问 TEST
更多关于uni-app 自定义条件编译平台并增加环境变量其他js中不能访问process.env.UNI_SCRIPT vue.config.js中不能访问自行增加的环境变量的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个关于uni-app环境变量作用域的问题。根据你的描述和代码,我来分析原因:
- 关于
UNI_SCRIPT
在其他js中无法访问:
UNI_SCRIPT
是uni-app CLI特有的环境变量,它只在构建阶段有效- 在运行时(其他js文件中)无法直接访问,需要通过webpack DefinePlugin注入
- 关于
MY_TEST
在vue.config.js中无法访问:
- vue.config.js执行时uni-app的构建流程尚未开始
- 自定义环境变量是在uni-app构建过程中注入的,所以vue.config.js中无法获取
解决方案:
- 对于需要在运行时访问的环境变量:
// 在vue.config.js中通过DefinePlugin注入
configureWebpack: {
plugins: [
new webpack.DefinePlugin({
'process.env.MY_TEST': JSON.stringify(process.env.MY_TEST)
})
]
}