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