原创:跳坑指南——微信小程序真机预览跟本地不同的问题

微信小程序中出现最多的一个问题,就是真机跟本地不同:我简单列举一些我发现的原因,给大家参考,大家也可以把自己发现的东西回复给我,给我参考:

本地看不到数据,就先让本地能看到数据,再看本帖。。。。

1:本地可以看到数据,ios不行,安卓可以;
可能是tsl版本问题不支持1.2导致,部分安卓可以允许tsl低于1.2而正常显示,而苹果不行; 解决方法:参考此帖排查问题并修复:request:fail错误(含https解决方案)(真机预览问题 可能是证书不受信任

2:本地可以看到数据,ios可以,安卓不行;
ios可以,而安卓不行,可能有如下几个情况
情况一:使用了不兼容安卓的js,比如es6的Object.assign,部分es6不兼容安卓,即使开启es6转es5选项也无用;比如for of 和 forEach 需要换成for in;
情况说明:官方将在本月内的第二个版本更新时对ES6绝大部分API进行兼容
情况二:证书缺失,大部分情况是缺失中间证书,检测地址:https://www.myssl.cn/tools/check-server-cert.html;中间证书安装参考:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1661
情况三:证书不受信任
情况四:测试机型较老,而tsl版本不支持;tsl需要支持较老版本,包括1.0,1.1;

3:本地可以看到数据,IOS及安卓均不可看到数据:可能是:
情况一:使用了自签的证书;必须使用第三方受认可的证书
情况二:使用了IP,必须使用备案的域名
情况三:https问题,选项中选择了不检验域名选项,此选项对真机无效;

4:url内使用了端口,参考:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1899

5:数据未加载成功,需要设定一定的延迟量,在加载数据完成后再渲染页面;

6:一些特殊问题,包括utf-8的bom问题导致安卓红点问题;http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1522

  • 后台返回数据中有bom非法字符, 前端可以用.trim()方法去一下, 治标的话得让后台把所有的文件编码格式改为utf-8 官方解释:近日有发现类似问题的都是因为返回的数据是 UTF-8 with BOM(即数据的开头是一个不可见字符 unicode 65279),Android 平台没有自动过滤,导致 JSON.parse 失败。目前需要开发者自行兼容,下个版本 Android 会过滤此字符。
  • <?php 前边有一个 <feff>: http://www.wxapp-union.com/portal.php?mod=view&aid=959
  • http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1366: 你请求得到的res.data是否有值,如果没有值就检查一下ssl的问题。 如果有值但没有赋值成功,最可能的原因是获取的是一个字符串而不是一个数组或对象。 你需要做一个格式化, if(typeof res.data === ‘string‘)var data = JSON.parse(res.data.trim());再用data赋值。 这个的原因是php输出的不会忽略BOM的文件头,特别使用windows自带写字板修改后就会有个\ufeff的字符在文件开始处,这个是不可见但会实际包含的。最后返回的就是字符串而非json数据,你直接对data赋值字符串是无法达到你想要的效果的,所以需要去掉,并重新格式化变成一个数组或对象。

7:真机跟本地样式不同:可能使用了ios或安卓某一端不兼容的样式属性;目前编辑器检查越来越严格,标签不闭合可能导致一些奇怪的问题;

8:微信版本不足,建议使用最新版本微信进行测试;最新版本查看地址:weixin.qq.com;此情况会有可能会导致uploadfile无效及新增api无效等问题:http://www.wxapp-union.com/portal.php?mod=view&aid=959

9:图片本地可以看到,但是真机无法显示; 假如是背景图,可能是

本地资源无法通过 css 获取 background-image:可以使用网络图片,或者 base64,或者使用<image/>标签

假如是网络图片,可能是图片服务器设置了反盗链;

10:header设置异常:这个情况多数发生在使用POST时;

data 数据说明 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下: 对于 header[‘content-type‘] 为 ‘application/json‘ 的数据,会对数据进行 JSON 序列化 对于 header[‘content-type‘] 为 ‘application/x-www-form-urlencoded‘ 的数据,会将数据转换成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)

11:网络请求设置了referer :

网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版。

12:异步或同步问题;部分操作属于异步操作,比如uploadfile;http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1380

13:超时:

request 的默认超时时间和最大超时时间都是 60s

14:可以参考这个:微信小程序常见错误及基本排除方法

时间: 2024-10-27 12:38:22

原创:跳坑指南——微信小程序真机预览跟本地不同的问题的相关文章

微信小程序开发工具预览蓝屏问题处理过程

I.问题描述 开发工具:微信开发者工具 V1.02.1812271 1.现象描述: (1)编译通过,但在预览上传时突然蓝屏. (2)当小程序代码文件夹中存在较大文件时(大图片.多图片.大的npman类文件,一般超过800K),发生的概率较大,更新软件版本后几乎次次蓝屏. (3)参考开发社区意见,尽量减少文件体积,但是不能从根本上解决问题. 现场触发界面和蓝屏界面如下: II.处理过程 借鉴微信小程序开发者社区的同类问题的答复,有人说这是新版本开发工具的BUG,一开始我信了.但我总不能通过无限制削

微信小程序真机定位问题技巧

小程序导航 https://wq.xmaht.top 开发者在开发小程序的时候可能会碰到一些这样的问题: 问题1  开发者工具上看效果没问题,但是在真机上测试不行? 问题2  有用户遇到小程序功能无法使用的问题,但无法快速定位解决? 今天与大家分享一些真机定位的技巧,可以解决上面两个问题. 1.vConsole开发利器和远程调试功能 针对问题1,我们提供了 vConsole 开发利器和远程调试功能,可以协助开发者在定位真机上的问题. vConsole 的有四个Tab面板,可以先看下 Log 面板

微信小程序真机调试中一些小问题

今天用mpvue在写微信登录业务处理的时候,遇到了一个奇怪的问题. 想记录一下,以免未来再次踩坑. 环境是这样的,我后台是自己搭建的基于wafer2-node-sdk的业务处理API,使用微信开发者工具调试测试用户登录是没有问题的. 界面如下. 后台通过凭证发送给微信服务器获取到了userInfo. 但是到了真机调试, 就一直是在正在请求中. 而在真机运行中是没有自动清除缓存的机制的,所以如果出现莫名其妙的bug,所以,可以考虑是否是缓存带来的问题. 所以在登陆界面设置一个按钮,触发事件使用ap

小程序报错:request:fail错误(含https解决方案)(真机预览问题)

问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败, PC端是可以请求数据出来的 新版开发者工具增加了https检查功能:可使用此功能直接本地避开ssl协议版本检查,但是此功能对(非调试模式)真机无效!(如需发布仍需排除所有问题才可正常使用)详情请参考:跳坑<七十九>调试模式与非调试模式,不校验域名 <ignore_js_op> 可能原因:0:后台域名没有配置配置完毕请点击刷新按钮:<ignore_js_op> 0.1:域名不支持https1

Sublime WiFi真机同步和WiFi真机预览使用说明

概述 WiFi真机同步: 通过在Sublime中建立调试服务,接收真机设备主动连接调试的方式,配合apploader及自定义loader,为开发者提供在局域网内通过WiFi实现应用快速真机同步和实时预览的服务,摆脱应用开发调试过程中,真机同步时必须依赖USB数据线的困扰,完美解决了USB数据线真机同步方式存在的各种问题,具有更强的稳定性和兼容性.WiFi真机同步支持一对多的同步,即同一个项目可同时同步到多个真机:WiFi真机的同步策略为"增量"策略,即每次同步仅同步被编辑过的文件,因此

继上一个坑有一个坑(微信小程序一键登录之无法识别json数据)

前言:  作为一个运维人员不背锅,谁背呢! 正文: 开发人员和前端人员写好了微信小程序,然后坑出现了,安卓上打死不能一键登录.然后开始排查, 开始从数据上着手,不管是使用postman进行模拟测试数据,还是通过抓包查看数据,无任何问题,但是就是微信小程序无法判断改数据是json数据. 后来继续测试,打console.log 断点,抛数据出来查看发现 该数据 确实也存在问题,直接使用res.data 使用typeof 查看 确实为字符串,但是使用JSON.parse 却抛的微信小程序 百度都不能百

在CentOS7阿里云服务器部署ThinkPHP5的过程和坑(微信小程序及管理员后端)

小程序和后端同步开发(后端tp5框架配置好直接开干咯) 1.服务器安装tp5框架: 方法很多比如:github.linux命令直接手动下.composer 都可以,方法很多,百度一下,不再累述 2.这时你会发现怎么都访问出现不了这个令人舒心的界面(ok第一个坑到啦) 这真的让我也急的冒汗,查了好多好多资料,废话不说直接上原因:因为linux服务器访问网页,默认情况下只能访问wwwroot目录下的网页. 3.OK找到原因就好办啦(吭哧吭哧开始填坑),直接把下载的文件剪切一下(具体命令怎么剪切,宝塔

微信小程序安卓机使用uploadfile提示undefined错误原因

前几天开发小程序,在使用微信的uploadfile接口上传图片时,调试工具以及ios的手机无论是拍照,还是选择手机中的图片都可以正常上传图片,而安卓手机在上传图片时,微信总是返回error,且错误提示是undefined(微信返回,数据还没有上传到服务器) 于是网上找资料,找前辈问,未果,总是时好时坏也找不到原因后来,偶然发现,同时上传的字段,如果填写数字,则可以成功提交,如果填写中文则会报错. 于是想到,是不是编码问题,抱着试一试的心态,让前端在上传数据之前加个encodeURI,然后我解析的

小程序电脑调试没有问题,真机预览报错fail hand shake error

今天在做小程序的过程中使用HTTPS请求数据时,遇到安卓机型无法获取到数据,通过一系列的排查,发现是因为ssl证书的问题,后来通过https://www.myssl.cn/tools/check-server-cert.html检查发现缺少中间证书: 打开网址 : https://www.myssl.cn/tools/downloadchain.html 获取中间证书 点击下载中间证书文件 打开conf 地址一般为:      /www/server/panel/vhost/apache/***