今天,有朋友反映說,我的微信小程式的例子在andriod真機環境下運作出錯,研究調試了半天,發現原來是使用的bluebird.js(Promise實作庫)導緻的。
由于小程式架構最近的更新中移除了原生Promise的支援,喜歡使用Promise特性的開發者都會去引入其他的第三方Promise庫來替代,bluebird.js是一個性能不錯,特性又豐富的Promise實作庫,是以大家都愛用。不過,由于bluebird.js中有些代碼還是用到了document對象上的方法,在iOS的真機JavascriptCore環境中,貌似這些代碼并不會被觸及到,而在Android真機環境中,就會被執行到這塊代碼,導緻了錯誤的發生。
怎麼辦呢?找找其他能用的庫吧,Promise實作庫還算比較多的!NPM上搜搜就有。其中es6-promise是另一個被開發者下載下傳使用比較多的庫。通過npm指令我們可以很友善的将它下載下傳下來:
npm install es6-promise
然後在下載下傳下來的檔案夾下,把dist目錄中的es6-promise.js或es6-promise.min.js複制到你的微信小程式項目中,替換原來的bluebird.js就行啦,标準的Promise API一個都不會少。
而且es6-promise的代碼檔案體積比bluebird小個3,4倍,也算一個好處吧(隻能這麼自我安慰了...哈哈)
希望這篇文章能解決同樣遇到這個問題的朋友。