记一次微信小程序上传图片的坑

用过年的时间,开开心心规划好我的小程序路线图,完成第一版开发,准备真机测试后提交审核。

Day 1.

真机测试时发现一个奇怪的问题,iPhone无法上传图片,但是在真机调试模式下又能上传,简直是要疯了有木有!

刚开始以为是把wx.request()封装成Promise有问题,不断的debug呀,手动改成async/await,结果连安卓机都无法上传了。这回放心了,可以慢慢调试了。

过程中不断的咒骂,函数式编程就是TM的坑,不好调试。

无意间发现小程序后台的开发菜单下可以查看到小程序的报错信息,欣喜若狂,不到1分钟,发现都是之前已经修复了的错误。之后就不断的改代码,上传,测试,查看小程序后台的报错日志,结果一直没有错误。就这样,折腾了一天。

Day 2.

继续按照昨天的思路呀,希望看到有错误,结果还是没有。

气就气在调试模式能上传成功,关闭调试模式就歇菜,还不报错,一度怀疑腾讯小程序不好搞啊有没有!

既然看不到错误,我怎么知道执行到哪了呢,通过界面状态,一步步定位到卡停的位置了。

……在 Promise() 执行后的 catch() 中,仅仅 console.log() 了以下,关闭调试模式自然是看不到的,又不能alert(),肿么办?只能上报错误日志到后台了。

uploadFile:fail url not in domain list

看到后台(不是官方的后台了)记录的日志如上,拍大腿呀!一万只羊驼崩腾而过,我的两天时间啊,抽自己!!!

原因总结

  • 开发工具里关闭了业务域名校验功能,这很正常,开发时一般都不校验。
  • 由于第一次做小程序,只配置了request域名,其他的几个都没配置。导致正式环境无法上传文件。
  • 正式环境肯定就不是调试环境,自然看不到日志,一直在这里调试,自以为是Promise的锅,以为是小程序团队的锅。

避坑指南

新申请的小程序填写开发信息时一次性填写完整,不要只填一个 request 合法域名就算了,因为开始时不校验域名,后面的 download/upload 合法域名没填,就给自己挖好了坑。

提交审核小程序之前小程序内一定要有内容,否则一定不会通过!

以后碰到问题肯定是自己的原因,函数式编程很好,小程序很好!😆

谨以此文纪念我浪费的两天时间!