必须安装匹配的CLI和支付宝插件,补全manifest.json字段,适配API差异并升级开发者工具。否则会报错、白屏或功能失效。
uni-app 编译支付宝小程序前必须装对 CLI 和插件
uni-app 本身不内置支付宝小程序构建能力,得靠 @dcloudio/uni-cli 和 @dcloudio/uni-platform-alipay 配合。很多人卡在“运行 npm run build:alipay 报错找不到平台”,其实是没装插件,或者装了但版本不匹配。
- 确认 CLI 版本 ≥ 3.0.0(老项目用
uni-app@2.x的,得降级用@dcloudio/uni-cli@2.0.0-31920221205001) -
npm install @dcloudio/uni-platform-alipay --save-dev必须执行,且不能只装uni-app主包 - 插件安装后,
node_modules/@dcloudio/uni-platform-alipay目录下要有platform.json和index.js,缺一不可
支付宝小程序的 manifest.json 要手动补全必要字段
uni-app 默认生成的 manifest.json 不含支付宝要求的 permissions、requiredBackgroundModes 等字段,直接上传会提示“配置缺失”或预览白屏。
- 必须在
manifest.json的"mp-alipay"节点下加"permissions",哪怕空对象:{"scope.userLocation": {"desc": "地理位置权限"} } - 若用到了后台音频/定位,得显式声明
"requiredBackgroundModes",否则真机调试时功能失效 - 支付宝不认
"name"字段,得用"mp-alipay".name单独配,否则小程序标题显示为空
支付宝小程序不支持 uni.chooseImage 的某些参数
支付宝小程序 SDK 对 API 的兼容性比微信弱,比如 uni.chooseImage 的 sourceType 传 ["album", "camera"] 没问题,但加 count: 9 就会静默失败——它只支持 count: 1 或不传。
- 所有涉及多图选择、压缩、裁剪的逻辑,得用条件判断绕过:
if (uni.getSystemInfoSync().platform === 'alipay') { ... } -
uni.uploadFile的header中不能带Cookie,支付宝会拦截;改用token放 query 或 body - 支付宝不支持
uni.onNetworkStatusChange的离线回调,得用my.getNetworkType定时轮询
真机调试时白屏?先看控制台有没有 my.setStorageSync is not a function
这个错误不是代码写错了,而是支付宝开发者工具版本太低(my.xxx API,但老版本仍会把部分 uni 封装方法映射成不存在的接口。
- 检查
project.config.json里的minPlatformVersion,设为"10.2.90"并同步更新基础库 - 真机调试务必用最新版支付宝 App,iOS 用户尤其注意 App Store 更新滞后问题
- 白屏又没报错?打开
my.hideLoading()前加个setTimeout延迟 100ms,支付宝生命周期钩子触发时机和 uni-app 有微小偏差











