最近在學習微信小程序的開發,在一個練手項目中,需要使用一個第三方開源的庫xmorse.js,在使用是調用了xmorse.js中的一個方法decode(),結果出現如下報錯:
-
WAService.js:3 thirdScriptError
-
decode is not defined;at "pages/xmorse/xmorse" page
-
lifeCycleMethod onLoad function
-
ReferenceError: decode is not defined
-
......
后來查了一下微信小程序開發文檔,發現在引入第三方庫時需要暴露接口,而且第三方庫內不能使用window等對象。
小程序開發文檔Q&A
為什么腳本內不能使用window等對象?
頁面的腳本邏輯是在JsCore中運行,JsCore是一個沒有窗口對象的環境,所以不能在腳本中使用window,也無法在腳本中操作組件 所以自己又在網上尋找解決方法,最后發現了一種解決辦法,具體是參考segmentfault上的一篇文章微信小程序開發實戰——使用Immutable.js,照著上面自己慢慢的修改最終解決了這個問題
原始的庫:
-
!function (root, factory) {
-
if (typeof module === 'object' && module.exports) {
-
module.exports = factory(root); // nodejs support
-
module.exports['default'] = module.exports; // es6 support
-
}
-
else
-
root.xmorse = factory();
-
}(typeof window !== 'undefined' ? window : this,
-
function () {
-
// Map of Morse code patterns to supported characters.
-
......
修改后的庫:
-
!function (global, factory) {
-
module.exports = factory();
-
}(this,
-
function () {
-
// Map of Morse code patterns to supported characters.
-
......
這樣修改后就可以正常使用庫函數了。
|