uni-app vue.config.js条件编译不生效

uni-app vue.config.js条件编译不生效

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

操作步骤:

  • 必现

预期结果:

  • 控制台只打印 “能进来?wx”字样

实际结果:

  • 控制台展示打印信息:
[HBuilder] 10:53:02.880 能进来?app-plus
[HBuilder] 10:53:02.880 能进来?mx
[HBuilder] 10:53:02.884 能进来?H5
[HBuilder] 10:53:02.885 能进来?wx

bug描述:

  • 在vue.config.js中使用条件编译不生效,如图,在发行小程序时,h5和app-plus以及自定义的h5-mx都运行到了

https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20220223/3a5ee6a686a1099d13ed702a80d40d24.jpeg

https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20220223/2eab972e7b8974fb7510725ac1557d5b.png


更多关于uni-app vue.config.js条件编译不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

不支持条件编译,使用process.env.UNI_PLATFORM判断

更多关于uni-app vue.config.js条件编译不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,vue.config.js的条件编译需要通过process.env.UNI_PLATFORM来判断平台,而不是直接使用#ifdef语法。这是因为vue.config.js是webpack配置文件,不是vue模板文件。

正确的写法应该是:

if (process.env.UNI_PLATFORM === 'mp-weixin') {
  console.log('能进来?wx')
}

原因分析:

  1. #ifdef等条件编译语法只在.vue/.js/.css等模板文件中生效
  2. vue.config.js是webpack配置文件,需要使用node环境变量判断
  3. 发行时process.env.UNI_PLATFORM会根据不同平台自动设置值

建议修改为:

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