2016-06-07 15:45:46 wilgl1314 阅读数 14851
  • 微信开发核心基础

    很多公司,企业甚至政府部分都开通了微信公众号,想要发挥微信的大价值,就必须让微信跟自己的平台或者数据库联系起来。这套《微信开发核心基础》,用一个完整的案例,告诉你微信开发流程,错误调试,如何看开发文档,学习你就可以自己做些独立开发。这个教程使用PHP为开发工具,建议你先学习子恒老师的《微信公众号使用》。学习完后,可以跟我反馈,如果好的话,会推出《微信服务号开发》教程,QQ/微信:68183131

    12960 人正在学习 去看看 秦子恒

背景:使用微信web开发者工具进行移动调试,按照


配置网络代理后,如图:


当重启微信后,发现公共号上不去了,也不能正常的上网了

可以将服务器地址更改为:


去掉http://后再尝试,就可以了,然后选择微信web开发者工具,选择“”开始调试“,浏览公众号网页,就能开始调试了

2019-10-13 17:50:52 qq_26542493 阅读数 12
  • 微信开发核心基础

    很多公司,企业甚至政府部分都开通了微信公众号,想要发挥微信的大价值,就必须让微信跟自己的平台或者数据库联系起来。这套《微信开发核心基础》,用一个完整的案例,告诉你微信开发流程,错误调试,如何看开发文档,学习你就可以自己做些独立开发。这个教程使用PHP为开发工具,建议你先学习子恒老师的《微信公众号使用》。学习完后,可以跟我反馈,如果好的话,会推出《微信服务号开发》教程,QQ/微信:68183131

    12960 人正在学习 去看看 秦子恒

背景

最近在用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 ,我打了一个包,可以下载
ts+socket.io
没有积分的,可以留言邮箱,我给你发。

二、json对象的循环引用

Converting circular structure to JSON;at setTimeout callback function
TypeError: Converting circular structure to JSON
at JSON.stringify ()
在这里插入图片描述
看问题是在onLoad的时候,JSON.stringify 方法报的错,
原代码里,我做了一个判断,

//window.global不存在时,则初始化
if (window.global == null || JSON.stringify(window.global) == '{}'){
		window.global = {};
}

因为此时window.global是undefined,所以导致了JSON.stringify出错。
把这句改为 if(!window.global) 就可以了。

三、cannot set property ‘’ of undefined

在这里插入图片描述
PS:按理说,这种问题很简单,就和java的空指针类似,肯定是哪个变量没有定义才导致的。顺着这个思路走下去。

看错误提示,是addPlayer方法里边出的错,经排查发现是取global的一个属性时,这个属性还未定义。
因此,在入口程序的脚本里边把所有用到的全局变量都初始化一下。
类似于这样的:window.global = { a:null, b:{}, c:[] };

然而,重新测试还是这样的问题,百思不得其解,我已经初始化了,为什么还是找不到变量。于是,我在微信开发者工具里进行断点调试。

这里无奈吐槽一下,我简直要被微信开发者工具的debug工具误导死了,还以为是json解析异常呢。让我走了很多弯路。

首先说明一下,下边的data是从服务器接收的一个嵌套的对象,结构类似于

{
	players:{
		aaa: {
			name: "zhangsan",
			age: 12
		},
		bbb: {
			name: "lisi",
			age: 13
		}
	}
}

看debug步骤:
step1: 此处data值显示正常
在这里插入图片描述
step2: data.players显示的值也正常
在这里插入图片描述
step3: 发现let players = data.players这一行赋值语句,赋值后的players为一个字符串
在这里插入图片描述
这就很奇怪了,players本来应该是一个对象的,为什么在这却变成了一个字符串呢?

此处略过我的各种猜测,又改服务器代码,又该客户端代码的。(内心MMP)

虽然看着这语法没有什么不对的地方,但是我一时半会怎么也想不通到底结果为什么是这样。但是我不信邪,我就不信了,这么个小问题我还搞不定你了。

最终,我在控制台打印了一下global变量的时候,发现了重要的问题所在,此时global定义的空对象{}和空数组[]竟然全是undefined未定义的。明明,我已经在游戏开始场景定义了啊。算了,那我在本场景再重新定义一下吧。

终于,一番操作之后,问题被解决了。控制台也能正常的打印出来global空数组和空对象。此时再去看我debug的变量let players = data.players,players竟然显示正常了,WHAT???
微信,你玩我呢是吧。真是把我害惨了好吗。为什么同样的代码,刚才显示异常,现在显示又正常了呢??完美的把我的注意点带偏了。

总结:这个问题,导致的原因,是跨场景时global定义的空对象和空数组不识别,需要重新定义。
也引出了另外一个问题,global已经是全局的变量了,为什么里边的空对象和空数组在初始场景定义了,进入到其他场景却还是undefined呢?(global里边定义的null可以正常的跨场景)这个问题,容我以后再研究,有知道的小伙伴可以留言告诉我,谢谢~

2019-03-09 14:54:05 Jonty1024 阅读数 512
  • 微信开发核心基础

    很多公司,企业甚至政府部分都开通了微信公众号,想要发挥微信的大价值,就必须让微信跟自己的平台或者数据库联系起来。这套《微信开发核心基础》,用一个完整的案例,告诉你微信开发流程,错误调试,如何看开发文档,学习你就可以自己做些独立开发。这个教程使用PHP为开发工具,建议你先学习子恒老师的《微信公众号使用》。学习完后,可以跟我反馈,如果好的话,会推出《微信服务号开发》教程,QQ/微信:68183131

    12960 人正在学习 去看看 秦子恒

使用TBS Studio进行微信公众号真机调试

目前在微信公众号开发中大家都很了解微信开发者工具,在早期的微信开发者工具中有移动调试功能,让手机通过代理的方式开通移动调试,但是最新版本的微信开发者工具中移除了移动调试功能。

 

image.png

 

在微信公众号开发的实际过程中,因为网络部署、证书等种种原因会引起某些手机兼容性问题,这时候微信开发者工具就爱莫能助了,如何解决真机调试的问题,那就必须借助TBS Studio。

TBS Studio是什么

TBS Studio是面向基于TBS的Web开发者和移动应用开发商(包括微信、手Q,三方App等)打造的开发服务整体解决方案,以提升广大开发者在真机环境下的开发效率,并帮助开发者分析和优化网页的设计,主要功能有网页Inspector调试,网页性能分析等。

TBS Studio在哪里

TBS Studio 下载

TBS Studio如何使用

  1. 下载安装。
    按照官方手册安装。
  2. 手机打开usb调试,连接到电脑

     

    image.png

     

    3.打开手机上的微信app并让微信保持在前台。
    4.打开TBS Studio,点击启动检测。

     

    image.png

  3. tbs弹出确认,点击确定。

     

    image.png

     

    6.设定tbs的调试状态,公众号里选择普通网页。

     

    image.png

  4. 使用微信扫二维码,根据提示操作,操作完成后重新开启微信app,打开要调试的公众号或h5链接。
    8点击tbs的启动调试,得到如下界面。(这里可能需要打开微信浏览器的TBS调试,方法是:微信打开这个网址 http://debugx5.qq.com/ ,选择“信息”→把TBS调试勾上)

     

     

     

    9.找到要调试的连接点击对应的inspect,打开开发者工具,剩下的就和电脑chrome一样了,这里操作界面是和手机同步的。

     

2017-06-09 15:01:14 u010786200 阅读数 6033
  • 微信开发核心基础

    很多公司,企业甚至政府部分都开通了微信公众号,想要发挥微信的大价值,就必须让微信跟自己的平台或者数据库联系起来。这套《微信开发核心基础》,用一个完整的案例,告诉你微信开发流程,错误调试,如何看开发文档,学习你就可以自己做些独立开发。这个教程使用PHP为开发工具,建议你先学习子恒老师的《微信公众号使用》。学习完后,可以跟我反馈,如果好的话,会推出《微信服务号开发》教程,QQ/微信:68183131

    12960 人正在学习 去看看 秦子恒

废话不多说,4步解决移动端调试问题!!!!

以苹果手机为例

1、必须先下载微信web调试工具这就不多说了

2、保证手机和电脑在同一网段,手机打开无线局域网,点击所连接的网络进去后在最底部,HTTP代理选择手动,服务器设置为和本机一样的IP,端口9973

3、打开web调试工具选择移动调试---》ios设备调试---》开始调试

4、重启微信就可以访问你想调试的页面了

2017-03-07 15:45:27 ShaLiWa 阅读数 3655
  • 微信开发核心基础

    很多公司,企业甚至政府部分都开通了微信公众号,想要发挥微信的大价值,就必须让微信跟自己的平台或者数据库联系起来。这套《微信开发核心基础》,用一个完整的案例,告诉你微信开发流程,错误调试,如何看开发文档,学习你就可以自己做些独立开发。这个教程使用PHP为开发工具,建议你先学习子恒老师的《微信公众号使用》。学习完后,可以跟我反馈,如果好的话,会推出《微信服务号开发》教程,QQ/微信:68183131

    12960 人正在学习 去看看 秦子恒

开发微信页面,chrome与安卓真机(安卓4.4及以上)联机调试
1、手机中打开“设置”->”开发人员选项”->”USB调试”
2、用Android机在微信端访问 http://debugx5.qq.com
3、在打开的网页中选择 【信息】->【TBS settings】,勾选 【是否打开 TBS 内核 Inspector 调试功能】 ,重启微信
4、打开pc侧chrome, 在地址栏中输入chrome://inspect/#devices 选中discover usb devices。 首次联机需要翻墙

没有更多推荐了,返回首页