利用uniapp开发小程序云函数
config.json:
index.js:
package.json:
安装依赖包后启动项目即可打开微信开发者工具
注意:这里上传云函数可能失败。
解决:关闭微信工具并重开,再次上传即可。
个人建议,若要开发云函数,更好直接在小程序中开发,在uniapp中开发不仅麻烦且其它平台不通用。
初次使用云开发的一些坑
index.js? [ *** ]:68 [云函数] [login] 调用失败 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID , cloud function service error code -501000, error message Environment not found; at cloud.callFunction api;
1、检查自己的project.config.json文件,有没有"cloudfunctionRoot":"cloudfunctions/",
如果没有,手动添加,斜杠前面是文件夹名字,一般新建项目时候系统会自动生成
2、要使用云函数必须先安装node.js,安装后在cmd中输入node -v和npm -v打印版本号就可以知道是否安装成功.
3、需要为云函数安装wx-server-sdk依赖,在cmd中进入云函数所在的文件夹(可以直接在微信开发者工具中右键在终端打开),然后输入:
npm install --save wx-server-sdk@latest
比如login云函数就是login所在的文件夹。
还有一个坑就是记住环境id要么你自己不填要就是要复制,千万不要只复制横杠后面的
报错:
Error: errCode: -401003 api parameter type error | errMsg: parameter.data should be object instead of undefined;
注意千万要在增加数据时包含data字段
错误写法:无data字段
❌错误写法
✅正确写法:
微信小程序云开发入门-云函数
1 开通云开发
2 app.js
3 新建目录(云函数根目录),project.config.json中cloudfunctionRoot指定刚新建的根目录名称。
4 新建云函数,在云函数根目录右击,新建Node.js 云函数。编写。
5 调用
生啃 uniCloud文档 (二) 云函数
新建一个云函数默认是在严格模式下的
接收两参数 之一个event 是传过来的data参数,第二个为context 是客户端设备信息。
在cloudfunctions目录下创建common目录然后在该目录上面右键创建公共模块
云函数的公共模块 在要使用的地方文件夹先执行npm init -y 生成package.json
然后执行在执行 npm install (那个公共模块对应的路径) 安装该模块,然后就可以在页面里面, import 导入了。
小程序云函数调用失败解决方案
以官方提供的“小程序云开发快速启动模板”为例。
获取openid失败:
进行“点击获取openid”测试失败,出现下图所示的提示,并且控制台会提示以下错误信息:
VM86:1 [云函数] [login] 调用失败 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -504002, error message Function not found: [login]; at cloud.callFunction api;
云端运行环境为 Node.js ,需要先在本地安装 Node.js 和 npm 才能顺利测试。同时还要在云函数目录下安装 wx-server-sdk 依赖:
npm install --save wx-server-sdk
详细内容参见官方文档
直接忽略即可,并不会影响后续的云函数功能。成功安装依赖后,相应的云函数文件夹将生成一个 package-lock.json 文件。
小程序开发 云函数超时设置了,但还是3s警报
有可能是设置的时间长了。
云函数设置的是相当于云端执行时长过长时最长执行时间。而客户端断网情况下,实际属于客户端 *** 请求超时,并且会重试三次。每次超时是20s还是15s。
在云函数中使用了setTimeout函数并且设置了大于3秒以后触发,在前端请求云函数时出现了超时问题,代码反复检查很多遍都没有错误,控制台只输出超时,原因是云开发控制台云函数配置超时间时间默认为3秒,你设置了超过3秒当然超时。
0条大神的评论