微信小程序开发之云函数本地调试

news/2024/7/19 23:00:30 标签: 微信小程序, 小程序, 云函数

环境

  • 微信开发者工具 Stable 1.06.2303220
  • 云开发控制台 v1.5.47

简介

微信云开发提供了云函数本地调试功能,在本地提供了一套与线上一致的 Node.js 云函数运行环境,让开发者可以在本地对云函数调试:

  • 在本地调试时,可以设置断点,单步调试。
  • 本地调试还定制化提供了特殊的调试能力,包括 Network 面板支持展示 HTTP 请求和云开发请求、调用关系图展示、本地代码修改时热重载等等能力。

显然,使用本地调试可以大大提高开发、调试效率,因此,建议开发者在开发阶段和上传代码前,先使用本地调试,测试通过后再上线部署。

测试

准备

在微信开发者工具中,创建一个新项目 miniprogram-13 ,输入AppID,并选择“微信云开发”。

在“Pages”上新建文件夹“myPage1”,然后添加编译模式,选择“启动页面”为该页面。

测试1(不存在的云函数

打开 myPage1.wxml 文件,编辑如下:

<button type="primary" bindtap="btn1Click">Test1</button>

打开 myPage1.js 文件,添加如下内容:

  btn1Click() {
    wx.cloud.callFunction({
      name: 'nonexistent'
    })
    .then(res => {
      console.log(res)
    })
  },

这里我们调用了一个不存在的云函数 nonexistent

点击按钮,报错如下:

WAServiceMainContext.js:2 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID cb74606c-b2c6-46ad-b41e-31e3c672be75, cloud function service error code -501000, error message FunctionName parameter could not be found.; at cloud.callFunction api;

测试2(只存在本地的云函数

打开 myPage1.wxml 文件,添加如下内容:

<button type="primary" bindtap="btn2Click">Test2</button>

打开 myPage1.js 文件,添加如下内容:

  btn2Click() {
    wx.cloud.callFunction({
      name: 'myCloudFunc1'
    })
    .then(res => {
      console.log(res)
    })
  },

右键单击“cloudfunctions”,新建Node.js云函数。打开其 index.js 文件,编辑如下:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

// 云函数入口函数
exports.main = async (event, context) => {
  return 'Hello world!'
}

不要上传该云函数,也不要打开云函数本地调试。

点击按钮,Console输出如下:

{errMsg: “cloud.callFunction:ok”, result: {…}, requestID: “67e40cca-ad51-496c-816a-c6e9d4e1c872”}
errMsg: “cloud.callFunction:ok”
requestID: “67e40cca-ad51-496c-816a-c6e9d4e1c872”
result:
appid: “wxb6b7b29f5024c210”
event:
userInfo:
appId: “wxb6b7b29f5024c210”
openId: “om0Xk4nwFN3tHl3X9vEX7H-q_eFg”
proto: Object
proto: Object
openid: “om0Xk4nwFN3tHl3X9vEX7H-q_eFg”
unionid: “”
proto: Object
proto: Object

测试3(云函数本地调试)

右键单击“myCloudFunc1”,选择“开启云函数本地调试”:

在这里插入图片描述

弹出“云函数本地调试窗口”,并提示安装node modules:

在这里插入图片描述

点击“确定”按钮。

在微信开发者工具窗口,可以看到安装进度:

在这里插入图片描述
安装完成后,云函数本地调试窗口如下:

在这里插入图片描述
注意要勾上“开启本地调试”选项。

点击按钮,Console输出如下:

在这里插入图片描述
可见:

  • 当调用云函数时,Console输出:“小程序对本地云函数 ‘myCloudFunc1’ 发起了调用”。
  • 当调用云函数完成时,Console输出:“调用本地云函数 ‘myCloudFunc1’ 成功”。
  • 从API结果可见,确实调用了云函数,返回了“Hello world!”。

测试4(访问云数据库)

修改 myCloudFun1index.js 文件如下:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  return await db.collection('table0508').get()
}

调试步骤同测试3。

点击按钮,Console输出如下:

在这里插入图片描述
可见,云函数本地调试也能访问云数据库。本例中,从云数据库里获取了7条记录。

测试5(单步调试和输出)

修改 myCloudFun1index.js 文件,添加一些代码:

  ......
  let i = 1, j = 2

  let k = i + j

  console.log('k = ' + k)
  ......

调试步骤同测试3。

在行号处单击,可以添加断点:

在这里插入图片描述

单击按钮,断点生效:

在这里插入图片描述

有Watch、Call Stack、Local等,也有单步调试、继续运行等,和其它IDE开发环境都差不多,一看即知。

此外,在云函数本地调试的Console页签,可以看到云函数里的输出:

在这里插入图片描述

参考

  • https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/local-debug.html

http://www.niftyadmin.cn/n/398680.html

相关文章

避坑之网上下单的手机流量卡为什么老是失败!

最近有一些小伙伴们反应&#xff1a;在网上下单的手机流量卡&#xff0c;经常提示下单失败&#xff0c;不是这问题就是那问题的。 对于小伙伴们的诉求&#xff0c;小编向来是来者不拒的。今天就为大家整理一下下单失败的四大原因。 失败原因一&#xff1a;下单信息填写错误 下…

写好Java代码的30条经验总结

1、 类名首字母应该大写。字段、方法以及对象&#xff08;句柄&#xff09;的首字母应小写。对于所有标识符&#xff0c;其中包含的所有单词都应紧靠在一起&#xff0c;而且大写中间单词的首字母。例如&#xff1a; ThisIsAClassNamethisIsMethodOrFieldName 若在定义中出现了…

Halcon得出三角形内切圆

Halcon得出三角形内切圆 news2023/5/27 7:14: 目录 一、得出三角形的三个角点二、用类似尺规作图法得出三角形圆心 1、以三角形三角点画出圆形轮廓2、求出三角形轮廓与圆形轮廓之间的交点3、获得角平分线&#xff0c;三边角平分线交点为圆心三、求出圆心到边最短距离即半径 …

SpringBoot3-基础配置和多环境开发

1. 配置文件格式 提供三种属性配置方式&#xff0c;当三个配置文件都有&#xff0c;加载顺序从前至后 示例第二种&#xff08;主要也是用这个&#xff09;&#xff1a; 2. yaml格式 3. yaml读取数据格式的三种方式 第一种&#xff0c;使用Value读取单一属性数据 Value("${…

华为OD机试真题 Java 实现【相对开音节】【2022Q4 100分】,附详细解题思路

一、题目描述 相对开音节构成的结构为辅音元音&#xff08;aeiou&#xff09;辅音(r除外)e&#xff0c;常见的单词有life,time,woke,coke,joke,note,nose,communicate&#xff0c;use&#xff0c;gate&#xff0c;same&#xff0c;late等。 给定一个字符串&#xff0c;以空格…

Python接口自动化之yaml配置文件

Python自动化测试&#xff1a;7天练完这60个实战项目&#xff0c;年薪过35w。 软件测试技术分享总结 在自动化过程中&#xff0c;需要使用配置文件储存数据&#xff0c;比如数据库信息、账号信息、域名等。 其中&#xff0c;yaml文件是一种配置文件类型&#xff0c;相比较in…

RabbitMQ,RocketMQ,Kafka,Pulsar 几种消息队列的对比

文章目录 1.RabbitMQ&#xff08;1&#xff09;优点&#xff1a;相对轻量、非常容易部署和使用&#xff08;2&#xff09;缺点&#xff1a;对消息堆积的处理不好、性能上有瓶颈 2.RocketMQ&#xff08;1&#xff09;优点&#xff1a;消息可以做到0丢失、支持10亿级别的消息堆积…

程序员失业转行送外卖,晒出当天收入,还以为看错了!

在程序员的共识中&#xff0c;30岁之前自己是很受企业欢迎的&#xff0c;有经验有技术&#xff0c;能够为公司创造足够多的价值。 但是一旦超过了35岁&#xff0c;如果没有做到架构师或者成为管理人员&#xff0c;那很可能是连工作都找不到的。而且这个年龄的程序员还要面临着…