uni-app 3.2.9版本自定义发行不生效

uni-app 3.2.9版本自定义发行不生效

示例代码:

"uni-app": {  
    "scripts": {  
        "h5:prod": {  
            "title": "正式环境包",  
            "env": {  
                "UNI_PLATFORM": "h5",  
                "APP_ENV": "production"  
            },  
            "define": {  
                "H5-PROD": true  
            }  
        }  
    }  
}  
// #ifdef H5-PROD  
console.log(11111111111)  
// #endif

操作步骤:

  • package.json里面定义了uni-app–scripts,在实际使用中无法执行到对应的条件编译

预期结果:

  • 预期能执行对应自定义发行的条件编译常量

实际结果:

  • 无法执行对应自定义发行的条件编译常量

bug描述:

3.2.9版本自定义发行h5没有效果,代码中对应的条件编译变量无法执行
3.2.3版本可以使用


更多关于uni-app 3.2.9版本自定义发行不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

请更新到HBuilderX alpha 3.2.10版本

更多关于uni-app 3.2.9版本自定义发行不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


稳定版本啥时候能更新呢

根据你的描述,这是 uni-app 3.2.9 版本的一个已知问题。自定义发行(uni-app.scripts)中定义的 define 配置项,在某些情况下可能无法正确注入到条件编译(#ifdef)的预处理环节。

核心原因: 在 3.2.9 版本中,构建流程可能出现了变更,导致通过 package.jsonscripts 环境定义的 define 常量,未能被条件编译的预处理器正确识别。这与你提到的 3.2.3 版本可用的情况相符,表明是版本间的兼容性或回归问题。

直接解决方案

  1. 临时回退:最直接的解决方法是暂时将 @dcloudio/uni-app 等相关核心依赖回退到 3.2.3 版本,直到官方修复此问题。
  2. 使用环境变量替代:作为临时变通方案,你可以将 APP_ENV 等环境变量直接用于条件编译。例如,将你的代码修改为:
    // #ifdef H5 && APP_ENV === 'production'
    console.log(11111111111)
    // #endif
回到顶部