小程序开发软件常见问题及解决方案汇总

小程序开发软件常见问题及解决方案汇总

小程序开发软件常见问题及解决方案汇总


做小程序开发这几年,踩过的坑形形色色。今天把最常见的问题整理一下,配上我实践过的解决方案,不一定适用于所有人,但希望有参考价值。


开发工具类问题


模拟器白屏


这是被问最多的问题之一。代码没报错,但模拟器显示空白。


常见原因有三个。第一是 app.json 配置错误,页面路径写错了。第二是 JS 文件里有语法错误,微信开发者工具不会主动提示。第三是网络请求被拦截,资源加载失败。


排查思路是先打开调试器的 Network 面板,看有没有请求发出。如果根本没请求,大概率是路由没加载进来。如果有请求但返回错误,看控制台具体报什么错。


我的经验是,白屏问题八成是路径配置问题,仔细检查 pages 数组里的路径是否跟实际文件路径对应。


工具卡顿、响应慢


微信开发者工具用久了会变卡,这是老毛病了。解决方案有几个:定期清理缓存、用版本管理切换不同工具版本、关闭不用的调试面板。


如果项目文件比较多,每次保存都等好几秒,可以考虑把不需要编译的文件放到 external 目录里,减少编译范围。


代码提示不完整


有时候敲代码没有提示,变量名、API 都得自己写。解决办法是检查 project.config.json 里的 appid 是否正确配置,还有 es6、enhanced 等编译配置是否开启。


平台兼容问题


支付调起失败


调起支付前一定要先调统一下单接口,获取订单信息再调起支付。有些新手直接调支付 API,肯定会报错。


还要注意支付目录配置,必须在微信支付商户后台添加对应的支付目录,而且 HTTPS 证书要有效。


用户信息获取失败


微信用户信息接口改版之后,需要用户主动点击按钮才能获取。不能直接静默获取,这点很多人踩坑。


解决方案是加一个按钮,绑定获取用户信息的函数,拿到 openid 或 unionid 后再处理业务逻辑。


多端样式不一致


用跨平台工具开发时,不同平台的 UI 表现会有差异。比如同一个小程序,在微信和支付宝里按钮样式可能不一样。


处理方法是针对不同平台写条件编译,用平台特有的样式覆盖。uni-app 和 Taro 都支持条件编译语法,用 @ifdef 和 @ifndef 包裹平台特有代码。


性能相关问题


页面加载慢


小程序首屏加载超过两秒用户就开始流失。常见原因有两个:包体积太大,页面数据请求太多。


包体积问题通过分包加载解决,把首页以外的页面放到分包里,主包只保留核心框架。用户首次访问只加载主包,进入其他页面再加载分包。


请求多的问题通过合并请求和本地缓存解决。多个无关接口可以并行请求,数据变化不频繁的页面加本地缓存,减少网络请求次数。


列表卡顿


做长列表的时候,如果每个 item 都包含图片和复杂视图,滚动会明显卡顿。解决方案是用懒加载,只渲染可见区域的 item,滚动时动态加载。


微信小程序有虚拟列表组件,uni-app 社区也有对应的插件可以用。数据量超过几百条的时候一定要上虚拟列表,不然性能会很差。


发布审核问题


审核被拒绝


审核被拒是每个开发者都会遇到的事。最常见的原因是:功能不完整、用户协议缺失、虚拟支付有诱导嫌疑。


提前规避的方法是,上线前自己过一遍审核要点文档,对照检查。网上有很多前人总结的审核被拒原因,多看看能少踩很多坑。


版本回退


新版本审核不通过或者线上出 bug 了,需要回退到旧版本。用微信开发者工具的版本管理可以回退,但要注意数据兼容问题。新版本改过数据库结构的,直接回退会导致数据丢失。


写在最后


小程序开发的问题远不止这些,但这几个是我遇到频率最高的。先写这些,有什么其他问题欢迎交流。