问题1
uni项目使用 HBuilder X(IDE版本号2.6.5.20200314)编译到支付宝小程序,报错”TypeError: Cannot read property 'call' of undefined “,具体错误信息截图如下:
可以看到上面绿框中一行,大概意思在创建 ”pages/user_modules/o2ohyorder“ 这个组件的时候发生错误了,没有更多的错误信息,只能一步一步注释这个组件中的代码,找出问题所在。
解决方案
可能性1:import了未使用的组件导致,删除该组件中未使用的组件即可
其他可能性暂未发现。
问题2
uni项目编译为各端小程序的时候,注意css中background-image:url('')不要使用本地图片,有的小程序不支持在样式文件中引入本地图片,将需要使用的图片上传至:webApp\c-static\images\wxminiImg 发包之后,使用域名访问。
可在common.less中定义变量 @img-domain,然后css样式中进行拼接
background-image: url('@{img-domain}/wxminiImg/test.png')
问题3
uni中不支持独立分包!!!!!
问题4
关于uni-app中实现支付宝小程序授权登录获取用户信息,根据支付宝小程序官方提供的文档,授权登录可以调用my.getAuthCode,或者调用uni提供的uni.login,都会弹出授权窗口,授权成功获得authCode(注意支付宝原生和uni参数的区别)。
获取用户信息,uni.getUserInfo现在已经不支持支付宝小程序了(虽然官方文档还没更新过来),我们需要使用支付宝提供的获取会员信息API(传送门:小程序文档 - 支付宝文档中心),通过button组件唤起授权弹窗,划重点:
支付宝官方文档提供的写法是:
此写法通过uni编译到支付宝小程序会发现,授权成功或者失败的回调方法都没有执行。坑爹的uni,改成如下写法就好了:
问题5
又是支付宝小程序的问题。。。如果你的项目里界面编写使用了H5标签,<a> <span>等等,编译到支付宝小程序上发现该标签上设置的点击事件失效了,不要惊讶,统统换成<div>或者<view>。(具体转到问题8)
问题6
编写样式代码的时候,尽量避免使用 :last-of-type :nth-of-type()等,因为你不知道哪个平台的小程序不支持这些选择器。
问题7
还是支付宝小程序的问题。。。如果在编译支付宝小程序的时候,报如下错误:
错误的大概意思是,在props中定义的变量只能由父传给子,单向数据流,在子组件中不能直接操作这个变量。那么首先去子组件中检查一下是否对props中的变量进行了操作,我想你得到的答案应该是根本没有操作过,
那就不用在意这个报错了,uni的bug,或者支付宝的bug。如果你确实操作了props中的变量,那么请换种方式:可以在data中定义一个变量,将props中的变量作为初始值赋值给这个变量,然后操作data中的变量。
问题8
如果在项目开发中使用了H5标签写布局,那么要注意一点 span 标签在uni编译到支付宝小程序会变成label标签,这会导致一个问题原先在span标签定义的click事件会失效。a 标签经过uni会编译成 <navigator> 在IDE上调试的时候,你会发现会报如下错误:
在小程序中使用<navigator>跳转,需要设置url跳转页面,遇到这种情况,尝试直接去掉a标签,或者用<navigator>替换。
问题9
设置页面100%高度,一般会在App.vue 的<style>标签中设置 page{width: 100%; height: 100%;},目前在微信小程序和字节跳动小程序中是有效的,在支付宝小程序中会发现页面高度是由内容撑起来的。解决方案:使用条件编译,在支付宝小程序中设置
page{widht: 100%; height: 100vh;}
问题10
项目的iconfont库是阿里巴巴图标库生成的链接,阿里巴巴生成的链接是没有带协议头的,我们在引用到项目中的时候注意要加上 https 协议头, 防止某个平台图标显示不出来。此问题uni-app官方也有做解释:传送门:uni-app官网
问题11
组件标签中如果定义了class选择器,切记定义class的值,不要只写一个class,HBuilderX 2.7.5版本中,标签中class没有值,编译运行会报错 :class 不支持true语法