Skip to content

记一次小程序接口从云开发迁移至本地服务器的经验收获

Posted on:2023年3月8日 at 08:12

前言

本文章仅记录个人在第一个小程序项目中的获得的心得体会,并不保证解决方法的准确性。(其实去年十二月就打算写,一直拖到今天,快要忘完了…)


项目背景

去年下半年收到了微信云开发要开始收费的通知,内部商量后决定将云开发上的数据库迁移至本地服务器。


一、上手小程序

原先的项目是采用云函数和vant框架开发的,用来给团队新人记录工作时长与实时查看是否有空余位置。上手过vue等前端框架后再简单上手小程序会比较容易。印象里我是上半年就接手了这个小程序,复现了原本丢失的页面代码和更新了座位布局的UI样式。


二、主要问题

1.请求库相关

问题描述

小程序需要将接口从云函数迁移到服务器上,自带的wx.request使用体验较差,想在小程序环境中使用axios,但axios的adapter是请求适配器,只适配了nodejs和xhr。

解决过程

(1)首先,在微信开放社区查询,找到了封装好的axios-miniprogram-adapter请求库,能在多种小程序环境下使用axios。

axios-miniprogram

(2)于是顺利的进入了报错环节 axios报错 调试了一会发现,只要有 import axios from ‘axios’ 就会报错,于是去翻axios的源码

(3)在defaults中找到了原因

路径 源码

只要不是xml环境,他就会认为是nodejs环境,我们安装的适配库并没有起到作用。

(4)回滚以前的版本发现是在0.27时变成这样的(0.27调整了FormData,可能与此有关),于是卸载默认安装的0.28.x版本,重装0.26版本的axios就不会报错了。


PS:1.2版本疑似把这段改掉了?不过当时出现这个问题的时候是十月,也不知道现在还会不会有这个问题。


2.openid相关

小程序通常都需要辨别用户身份,此时就需要向微信方发送请求获取用户唯一的openid。一开始脑抽了通过前端获取,于是喜提 惊觉我把AppSecret明文保存了… 于是跟后台沟通,从后台去获取openid,就不会有问题了。详细可以参考

微信小程序本地开发:获取用户openid


3.域名证书相关

真机调试的时候发现只有windows发送得出请求 安卓和ios都发不出去 续期完tls证书就好了,也不知道为什么,有点玄学。


总结

这次项目的收获还是不少的,主要的收获还是一个遇到问题如何去解决的思路吧(不过未来真是再也不想碰小程序了- =͟͟͞͞ =͟͟͞͞ ヘ( ´Д`)ノ)