cli项目在安卓APP下node_modules中的代码条件编译无效

cli项目在安卓APP下node_modules中的代码条件编译无效

信息类别 详细信息
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 windows 10
手机系统 Android
手机版本 Android 13
手机厂商 小米
手机机型 Redmi Note 11 5G
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 CLI
CLI版本号 2.0.2-4040520250103001

bug描述:

我是使用npm安装的"uview-ui": “1.8.8”,在使用u-navbar组件时,发现在安卓app下条件编译无效,把对应的代码复制到src目录的components组件之后又好了

初步怀疑:安卓node_modules下的代码,js部分条件编译失效

HBuilder X 4.45
@dcloudio/uni-app: “2.0.2-4040520250103001”

示例代码:

let menuButtonInfo = {};  
// 如果是小程序,获取右上角胶囊的尺寸信息,避免导航栏右侧内容与胶囊重叠(支付宝小程序非本API,尚未兼容)  
// #ifdef MP-WEIXIN || MP-BAIDU || MP-TOUTIAO || MP-QQ  
menuButtonInfo = uni.getMenuButtonBoundingClientRect();  
// #endif

操作步骤:

运行到手机,安卓

预期结果:

条件编译有效

实际结果:

条件编译无效


6 回复

看截图是有 api 报错。提供一个复现工程吧,先去掉运行报错。


已经上传附件,复现工程代码,安卓条件编译无效

ok 我看下

回复 DCloud_UNI_OttoJi: 有结果没,啥时候能解决

@DCloud_Android_ST @DCloud_Android_zl @DCloud_Android_THB @DCloud_UNI_OttoJi @DCloud-HBuilderX团队
node_modules目录下,APP条件编译无效,100%复现,求大佬们看一下,已经上传代码

这是一个已知的uni-app在Android平台下的编译问题。当代码位于node_modules目录时,条件编译可能会失效。这是因为uni-app编译器对node_modules中的文件处理方式与项目源码不同。

解决方案:

  1. 将需要条件编译的组件从node_modules复制到项目src目录(如你已尝试的方法)
  2. 或者修改构建配置,在vue.config.js中添加如下配置:
module.exports = {
  transpileDependencies: ['uview-ui']
}
回到顶部