cocos/laya/egret引入第三方js库报xxx not defined解决方案
cocos/laya/egret都支持引入第三方的js库来支持更多的功能。
不过在引入js库后,打包为微信小程序等小程序平台应用时,总是报xxx not defined
的问题。
问题分析:
这是因为cocos/laya/egret对小程序平台做了对应的适配,三方js库导出的对象都需要挂载到window对象下,才能作为全局对象使用。
解决方案:
在三方js库中添加window.xxx=xxx;
举例:
a.js中的内容为:var a="hello world";
在cocos/laya/egret中引入后,在H5页面下可以正常使用,但微信小程序中报a not defined
修改为:
var a="hello world";
window.a=a;
实测:
可以正常使用,同时这种方法兼容H5/各种小程序和app。
优化:
以上方法简单粗暴,一般不会存在较大的问题。不过某些时候不太兼容js库本身对微信小程序环境的适配。需要通过判断运行环境做进一步的优化升级。
针对cocos/laya/egret做平台判断,当判断运行环境为cocos/laya/egret时,将对象挂载到window下。
var a="hello world";
if((typeof cc!=="undefined")||(typeof egret!=="undefined")||(typeof Laya!=="undefined")){window.a=a}
最后:
实际中引入的第三方js库并不会像文章中举例的那么简单,开发者需要仔细分析三方库代码,在合适的位置引入以上适配代码。