背景
最近在用cocoscreator做一个对战的小游戏,通信用的socket.io模块,客户端语言用的ts,后端用的node.js
简单的功能做的差不多了,然后打包到微信开发者工具和真机进行调试时发现了一些匪夷所思的问题(也许只是对我来说是这样)。记录一下,以避免以后踩同样的坑。
一、self in not defined

在本地和开发者工具中调试都是正常的,但是不知为什么到真机调试的时候就会报这样的一个错。
国庆前,就一直搞这个问题,cocos论坛和微信开发社区,大佬群各种地方发帖子,寻求解决办法。最终,无疾而终。
终于在国庆之后,死马当活马医。在我全局搜索项目中哪里用到了self之后,发现socket.io.js里边有几个self。代码是压缩状态,我也没仔细看里边的逻辑是怎样的,猜测有可能是这里边self有问题吧。
反正已经试了很多方法了,也不差这一下,换个socket包试一下吧。
于是,我把socket.io.js(客户端用)的版本改为之前在论坛找到的一个包,版本1.4.4。
最终测试,竟然成功了,困扰我半个月之久的问题终于解决了。
总结:
1.用1.4.4版本的socket.io.js客户端包
2.执行命令 npm install @types/socket.io-client 得到的1.4.5的ts声明文件(ts智能提示需要)
疑问:socket.io包的版本是:^2.2.0,socket.io.js也是从这里边拿出来的,版本相同按理说应该是没问题的,为什么这儿却不行。
如果你也需要使用 ts的.d.ts + socket.io.js ,我打了一个包,可以下载

在使用cocoscreator开发微信小游戏时,遇到socket.io.js的self引用错误、JSON循环引用报错以及全局变量未定义的问题。通过更换socket.io.js版本为1.4.4,修改JSON.stringify的判断条件,以及在每个场景重新初始化全局变量,解决了这些调试中的难题。
最低0.47元/天 解锁文章
577

被折叠的 条评论
为什么被折叠?



