Mr_Ooyo
Mr_Ooyo
  • 发布:2026-02-02 09:35
  • 更新:2026-02-02 09:43
  • 阅读:19

ifndef MP-WX 在打包成微信小程序时异常

分类:HBuilderX

在js中 写了```javascript
// #ifndef MP-WEIXIN
uni.hideTabBar()
// #endif


编译成微信小程序后 报错    
{"errMsg":"hideTabBar:fail custom Tabbar"}  

我已经在pages.json中的tabbar开启了custom  
但是这个条件编译在小程序为什么生效了?  

切如果这样写 在打包成h5或者app后 会出现 原生导航栏还是出现了
2026-02-02 09:35 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根本原因是您把平台标识写错了。
uni-app 官方规定的微信小程序条件编译标识是 MP-WEIXIN(带完整拼写),而您写成了 MP-WX,编译器识别不到,于是这段代码在所有平台都被保留,导致:

  1. 微信小程序端:您同时启用了 custom-tab-bar,运行时会因为 uni.hideTabBar() 与自定义 tabBar 冲突而报错 {"errMsg":"hideTabBar:fail custom Tabbar"}
  2. H5 / App 端:uni.hideTabBar() 在这些平台无效,看起来就像“原生导航栏还在”。

请把代码改成官方标识即可:

// #ifndef MP-WEIXIN  
uni.hideTabBar()  
// #endif

如果您只想在微信小程序里跳过,也可以这样写:

// #ifdef MP-WEIXIN  
// 微信小程序里什么也不做  
// #endif  
// #ifndef MP-WEIXIN  
uni.hideTabBar()  
// #endif

补充两点建议

  • 在 HBuilderX 底部状态栏把当前语法平台切到“微信小程序”,IDE 会给出正确的代码提示,也能避免拼写错误。
  • 如果项目里已经大量用了 MP-WX,可以在 package.json 里加一条自定义条件编译把 MP-WX 映射到 MP-WEIXIN,但最稳妥的做法还是统一改成官方标识。
内容为 AI 生成,仅供参考
Mr_Ooyo

Mr_Ooyo (作者)

我条件编译写的 是MP-WEIXIN 刚刚是在页面中手写的demo ,所以没有MP-WEIXIN 的错误

要回复问题请先登录注册