微信开发者工具中的循环

2019-05-14 00:17:00 weixin_34277853 阅读数 476

# apt-get install wine     //  需要安装wine,   否则开发工具报错:小程序重启耗时过久,请确认业务逻辑中是否有复杂运算,或者死循环

# git clone https://gitee.com/aizhineng/wechat_web_devtools.git

# cd /usr/local/src/wechat_web_devtools

# ./bin/wxdt            //也可以创建快捷方式到桌面,以管理员身份的打开文件夹,双击图标打开开发工具

 

真机调试报错:提示 Error: node-sync-ipc is broken.

2f738bd4b31c870192ff5598297f9e2f0708ff07.jpg

 

 

关掉开发工具

bin 目录下的*.sh 文件,我都执行了个遍,终于没有node-sync-ipc这个问题了 。

 

重新打开开发者工具,发现没问题了。

 

 

 

参考:https://gitee.com/aizhineng/wechat_web_devtools

转载于:https://my.oschina.net/u/3567851/blog/3049162

2018-11-21 16:55:00 weixin_30904593 阅读数 1143

    

    

 

  如图上,为错误原因。

  之前用开发者工具用的好好地,前些日子又版本更新,升级了一下,然后打开项目就出现上面的问题。当时以为电脑出啥问题了,也没当回事。今天再次打开开发者工具,发现还是出现上面的问题。一脸懵,新建项目,啥都没做竟然出问题。网上一查同样的问题一大堆。都没有找到有效的解决方法。折腾了大半天。最后查看了下防火墙。发现原来是这破玩意儿搞的鬼:

  找到防火墙设置:

    

 

    点击‘允许应用通过防火墙’,进入后,‘更改设置’,勾选开发者工具相关的选项,保存后问题就解决了。

    

 

转载于:https://www.cnblogs.com/jf-67/p/9996137.html

2017-09-20 17:19:57 qq442270636 阅读数 7089

关于微信小程序,最近被安排做微信小程序,首次接触,总体来说上手不是太困难。

对于小程序的循环问题颇有感触,因为自己绑定数据到界面无数次用到循环和嵌套循环。

对于我们在js中从接口中通过POST或GET请求获取数据存放到Page中定义的对象中:

 

//首页话题列表
     wx.request({
       url: 'https://*******************',
       method: 'POST',
       data: {
         pageNum: 1,
         pageSize: 10
       },
       success:function(res){
         that.setData({
           listTop:res.data,
           
         })
       }
     })


在wxml文件中通过    wx:for="{{listTop}}"  

 

来实现循环输出对象中的数据,这里我们可以通过{{index }} 获取下标,也可以自定义下标:

wx:for-index="index2"

 

当listTop中存在对象com的时候,我们可以通过wx:for="{{item.com}}" 来实现循环该循环中的数据。

 

我在实际的项目中,遇到这样一个问题:在嵌套循环的过程中,我需要将某个字段的值进行转换,比如时间戳换成日期/几天前等,这个时候我们应该

知道微信小程序不支持界面直接调用JS,这个时候我们应该怎么解决:

 

起初自己饶了很大一个弯子,我总是想在JS中通过循环放到一个对象中,然后再在界面循环出来,其实前一步我已经接近结果了,但是实际开发中

自己作为刚入职不到一个月的新手还是有很多不足,所以自己陷入到死循环当中。

 

解决方案:在你遍历出来的时候,直接把原有的数据替换成想要的数据就行了。。。。(很简单,但是当局者迷,但是由于自己解决的,可能存在

更好的方法,这里仅作叙述)

   for (var i = 0; i < res.data.data.length;i++){
           console.log(res.data.data[i].comments+"**********"+i) 
         
           console.log("***"+i)
           if (res.data.data[i].comments !=null){
             for (var j = 0; j < res.data.data[i].comments.length;j++){
               res.data.data[i].comments[j].createTime=transDate(res.data.data[i].comments[j].createTime)
             }
           }
             }

 

 

更多文章请关注公众号:每天学Java。想获得更多最新面试提醒请进入小程序:每天学Java

 公众号二维码:                                                                                          小程序二维码:

                       

2019-10-13 17:50:52 qq_26542493 阅读数 389

背景

最近在用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可以正常的跨场景)这个问题,容我以后再研究,有知道的小伙伴可以留言告诉我,谢谢~

2020-05-07 22:36:17 Sky_for_me 阅读数 333

在使用 微信开发者工具 时,我经常会碰到忘记标签名称,这时候我都会用 代码提示 的快捷键,问题来了,微信开发者工具 的 代码提示 快捷键是 Ctrl+空格,即使按下 Ctrl+空格也没有提示,反而输入法切换了 中/英文。微信开发者工具 又不能更改 代码提示 的快捷键,在这里,我提供一种可以使用 Ctrl+空格 触发代码提示(不触发切换中英文)的方法。

1. 设置-时间和语言-添加首选的语言在这里插入图片描述

2. 搜索“美国”-选择“英语/美国”-下一步

在这里插入图片描述

3. 默认即可,直接安装

在这里插入图片描述

4. 安装后可在 语言 区域看到新添加的语言

在这里插入图片描述

5. 回到 微信开发者工具 ,按下 win+空格 切换输入法到 英语(美国)

在这里插入图片描述

6. 按下 Ctrl+空格 触发代码提示!!

在这里插入图片描述

注意:切换输入法到 英语(美国) 的时候是不能输入中文,Ctrl+Shift 切换输入法也失效,需要通过 win+空格 切换输入法。