微信小程序云函数
在微信小程序中,只要牵扯到请求Api的问题,微信必要这些域名备案,https等等。
但是有的国外的Api你又不能去备案,那么如何操作呢?
使用云开发中转
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Of0MmaJS-1592922565323)(http://myblogoss.aimezhao.online/20200519203207.png)]
实现步骤
- 创建用于中转的云函数
- 编写请求代码
- 上传并部署云函数
- 小程序端请求云函数
具体过程
1:创建云开发小程序
如果微信小程序要使用云开发,那么必须要有
AppId
,后端服务选择小程序·云开发
2:云开发小程序的结构
cloudfunctions
:云开发的后台miniprogram
:小程序端
先把新创建项目的
cloudfunctions
文件夹的所有文件删除
3:创建云函数并安装依赖
-
我们新建一个云函数,将其命名为top
-
安装依赖,在云函数内,我们通过
got
来请求未备案的Api
。选中top云函数,在终端打开,执行npm install got --save
-
进入top云函数,在
index.js
中引入got
const got = require('got')
-
在云函数入口处的
await got(url)
中的url换成你需要请求的未备案的Api这里使用的
wallhaven.cc
的请求Api
4:上传云函数
尽量选择云端安装依赖
5:小程序端选择默认环境
打开
miniprogram
小程序的app.js
文件,将env设置为你的云环境
env
的环境在这里查看
6:小程序端请求云函数
-
新建一个Page:top,写一个按钮,添加点击事件
-
在
top.js
中回调云函数wx.cloud.callFunction({ name: 'top' //这里是云函数的名称 }).then(res => { console.log(res); //看是否能打印 })
常见报错
在报错之前,一定要确认云函数上传成功
-
缺失模块问题:
no module
等等。解决办法:在终端打开,下载缺失的模块 -
反人类错误:
errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID 39fd6cb8-99d1-11ea-9174-525400f89277
。解决办法:重新上传云函数(多上传几遍)这里很邪门,再确认云函数环境指定正确的情况下(
app.js
里面env
指定正确)。就是多上传几遍或者重新创建一个项目迁移过去
-
总之,云函数需要注重的地方:
- 模块安装成功
- 确保云函数上传成功
- 云环境指定正确
- 确保返回数据的格式正确