摘要:?jiǎn)栴}有朋友問(wèn)微信小程序文件時(shí),會(huì)失敗分析事實(shí)上,微信小程序很多模塊都有不兼容現(xiàn)象。。。,被微信小程序初始化時(shí),指針為空,處理避開(kāi)這類訪問(wèn)。
問(wèn)題
有朋友問(wèn), 微信小程序require ("base64.js")文件時(shí),會(huì)失敗,,,
分析事實(shí)上,微信小程序require很多JS模塊都有不兼容現(xiàn)象。。。先從base64.js這個(gè)模塊入手吧。
調(diào)試出錯(cuò)點(diǎn):
(function(global) { "use strict"; // existing version for noConflict() var _Base64 = global.Base64; // 這句出錯(cuò)了...變量global的值是傳入的this指針值,this指針為空了. var version = "2.1.9"; // if node.js, we use Buffer var buffer;
調(diào)試了一下,主要現(xiàn)象
base64.js 代碼里面假定了this指定非空。微信小程序require調(diào)入進(jìn)來(lái)后,this指針為空,就會(huì)拋出異常。
對(duì)于微信小程序模塊化的機(jī)制與require,,參見(jiàn)本人寫的另一篇文字:關(guān)于微信小程序require機(jī)制的淺析
處理知道這個(gè)修改就較容易了:
兩處改動(dòng):
一 避免global為空指針
代碼頭部幾行 (function(global) { "use strict"; // existing version for noConflict() var _Base64 = global.Base64; var version = "2.1.9";
添加兩行改為
(function(global) { "use strict"; // existing version for noConflict() var _Base64 = global.Base64; var version = "2.1.9"; if (!global) global = {}
二 添加module.exports
文件尾部幾行 } // that"s it! if (global["Meteor"]) { Base64 = global.Base64; // for normal export in Meteor.js } })(this);
添加一行
} // that"s it! if (global["Meteor"]) { Base64 = global.Base64; // for normal export in Meteor.js } module.exports = global.Base64; })(this);
然后在微信小程序里面調(diào)用測(cè)試:
var base64 = require("../../utils/base64.js"); ... var srcstr = "不要問(wèn)我從哪里來(lái)"; var base64str = base64.encode(srcstr); console.log(base64str); 輸出: 5LiN6KaB6Zeu5oiR5LuO5ZOq6YeM5p2l總結(jié)
類似兼容性處理方案:
1,因?yàn)槟壳拔⑿判〕绦騬equire機(jī)制,,并不容易自定義一個(gè)require函數(shù)去代替(內(nèi)存中模塊列表對(duì)象在閉包之中,不易訪問(wèn)),所以通常做法是修改被加載的js模塊。
2,被微信小程序require初始化時(shí),this指針為空,處理避開(kāi)這類訪問(wèn)。
3,js模塊中,盡可能按module.exports = ... 方式導(dǎo)出對(duì)象.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/81033.html
摘要:微信小程序圖片上傳阿里云服務(wù)器也折騰了蠻久才解決的,所以特意去記錄一下。上傳失敗第四步源碼在這里如果覺(jué)得這面文章對(duì)你有幫助的話,可給我點(diǎn)個(gè)這里,謝謝最后,希望這篇文章對(duì)你有所幫助,真真確確是可以在微信小程序中上傳圖片到阿里云的。 本人今年6月份畢業(yè),最近剛在上海一家小公司實(shí)習(xí),做微信小程序開(kāi)發(fā)。最近工作遇到一個(gè)小問(wèn)題。 微信小程序圖片上傳阿里云服務(wù)器Oss也折騰了蠻久才解決的,所以特意...
摘要:微信小程序圖片上傳阿里云服務(wù)器也折騰了蠻久才解決的,所以特意去記錄一下。上傳失敗第四步源碼在這里如果覺(jué)得這面文章對(duì)你有幫助的話,可給我點(diǎn)個(gè)這里,謝謝最后,希望這篇文章對(duì)你有所幫助,真真確確是可以在微信小程序中上傳圖片到阿里云的。 本人今年6月份畢業(yè),最近剛在上海一家小公司實(shí)習(xí),做微信小程序開(kāi)發(fā)。最近工作遇到一個(gè)小問(wèn)題。 微信小程序圖片上傳阿里云服務(wù)器Oss也折騰了蠻久才解決的,所以特意...
摘要:微信小程序圖片上傳阿里云服務(wù)器也折騰了蠻久才解決的,所以特意去記錄一下。上傳失敗第四步源碼在這里如果覺(jué)得這面文章對(duì)你有幫助的話,可給我點(diǎn)個(gè)這里,謝謝最后,希望這篇文章對(duì)你有所幫助,真真確確是可以在微信小程序中上傳圖片到阿里云的。 本人今年6月份畢業(yè),最近剛在上海一家小公司實(shí)習(xí),做微信小程序開(kāi)發(fā)。最近工作遇到一個(gè)小問(wèn)題。 微信小程序圖片上傳阿里云服務(wù)器Oss也折騰了蠻久才解決的,所以特意...
摘要:文章有不當(dāng)之處,歡迎指正,如果喜歡微信閱讀,你也可以關(guān)注我的微信公眾號(hào)好好學(xué),獲取優(yōu)質(zhì)學(xué)習(xí)資源。一登錄流程圖二小程序客戶端獲取用戶信息非必填默認(rèn)為請(qǐng)求服務(wù)端的登錄接口臨時(shí)登錄憑證用戶非敏感信息簽名用戶敏感信息解密算法的向量調(diào)用服務(wù)端登錄接口 文章有不當(dāng)之處,歡迎指正,如果喜歡微信閱讀,你也可以關(guān)注我的微信公眾號(hào):好好學(xué)java,獲取優(yōu)質(zhì)學(xué)習(xí)資源。 一、登錄流程圖 showImg(htt...
閱讀 1834·2021-09-28 09:46
閱讀 3151·2019-08-30 14:22
閱讀 1884·2019-08-26 13:36
閱讀 3351·2019-08-26 11:32
閱讀 2100·2019-08-23 16:56
閱讀 1154·2019-08-23 16:09
閱讀 1309·2019-08-23 12:55
閱讀 2156·2019-08-23 11:44