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_SCRIPTUNI_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_SCRIPTvue.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

2 回复

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环境变量作用域的问题。根据你的描述和代码,我来分析原因:

  1. 关于UNI_SCRIPT在其他js中无法访问:
  • UNI_SCRIPT是uni-app CLI特有的环境变量,它只在构建阶段有效
  • 在运行时(其他js文件中)无法直接访问,需要通过webpack DefinePlugin注入
  1. 关于MY_TEST在vue.config.js中无法访问:
  • vue.config.js执行时uni-app的构建流程尚未开始
  • 自定义环境变量是在uni-app构建过程中注入的,所以vue.config.js中无法获取

解决方案:

  1. 对于需要在运行时访问的环境变量:
// 在vue.config.js中通过DefinePlugin注入
configureWebpack: {
  plugins: [
    new webpack.DefinePlugin({
      'process.env.MY_TEST': JSON.stringify(process.env.MY_TEST)
    })
  ]
}
回到顶部