一、未進行條件編譯導致的API未生效報錯
1.背景介紹
條件編譯算是uni-app一個很重要的特性,可以針對不同的平台執行不同的代碼,而且uni-app是一套代碼多端發布,如果專屬於某個平台的API沒有寫進條件編譯里,那么在其他平台運行代碼的時候就會報錯,今天就遇到了一個報錯,原因和未進行條件編譯有關
2.報錯信息
API 'getMenuButtonBoundingClientRect/' is not yet implemented
3.解決思路
報錯信息顯示,API getMenuButtonBoundingClientRect 未生效,網上找了一番,才知道問題出在運行平台上,getMenuButtonBoundingClientRect是微信小程序的API,但我運行的環境是H5,在H5端查詢不到對應的API,因此報錯,所以我們要加上條件編譯的代碼,進行平台區分,如果不是微信小程序平台,就不執行該代碼
4.加上以下代碼,進行平台區分,再在H5端運行,報錯就消失了
// h5 app mp-alipay不支持微信的方法
// #ifndef H5 || APP-PLUS || MP-ALIPAY
// 獲取膠囊位置,API getMenuButtonBoundingClientRect 只有在微信小程序運行的時候才會生效,H5端查看會報錯
const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
this.navBarHeight = (menuButtonInfo.bottom - info.statusBarHeight) + (menuButtonInfo.top - info.statusBarHeight)
this.windowWidth = menuButtonInfo.left
// #endif