最近在学习微信小程序的开发,在一个练手项目中,需要使用一个第三方开源的库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.
-
......
这样修改后就可以正常使用库函数了。
|