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

news2024/12/22 18:25:07

环境

  • 微信开发者工具 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.coloradmin.cn/o/611930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MD5知识详解】【面试知识】

MD5概述&#xff1a; MD5消息摘要算法&#xff0c;属Hash算法一类。MD5算法对输入任意长度的消息进行运行&#xff0c;产生一个128位的消息摘要(32位的数字字母混合码)。 MD5主要特点: 不可逆&#xff0c;相同数据的MD5值肯定一样&#xff0c;不同数据的MD5值不一样 (一个MD5理…

微信小程序nodejs+vue个人身体健康管理系统56b65

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 。配置文件 (自动编号、配置参数值、配置参数名称)&#xff1b; 论坛交流 (自动编号、用户id、状态、父节点id、帖子标题、用户名…

ndoejs基于Vue.js二手书交易网站系统x3oh4

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 本毕业设计的内容是设计并且实现一个基于vue框架的二手书交易系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xf…

chatgpt赋能python:Python取消warning指南:如何避免和处理警告

Python取消warning指南&#xff1a;如何避免和处理警告 如果您已经在使用Python编程&#xff0c;那么您一定会遇到过警告&#xff08;warning&#xff09;这个问题。虽然警告有时可能很有用&#xff0c;但在特定情况下&#xff0c;它们可能会引起程序错误或产生意想不到的行为…

Depcheck 检查前端项目中未使用的依赖包

前言 随着前端项目的迭代&#xff0c;项目中一部分的依赖包可能没被项目所使用的&#xff0c;手动查找这些依赖包耗时又繁琐&#xff0c;有没有根据能够快速的帮助我们识别和清理项目中未使用的依赖包呢&#xff1f; Depcheck 简介 Depcheck 是一款用于分析项目中依赖关系的…

windows下的SVN客户端访问ubuntu下的SVN服务器

目录 第一部分 windows创建本地版本库、连接ubuntu的SVN服务器 步骤0&#xff1a; 步骤一&#xff1a;创建windows本地版本库 步骤二&#xff1a;checkout检测 步骤三&#xff1a;输入之前配置的用户名和密码 第二部分 windows上传文件至SVN服务器 步骤一&#xff1a;添加…

Python数据攻略-DataFrame的创建与基础特性

大家好&#xff0c;我是Mr数据杨&#xff0c;今天我带来的是一本既实用又有趣的Python教程笔记&#xff0c;主角是Pandas DataFrame。它就像《三国演义》中的诸葛亮&#xff0c;机智、实用&#xff0c;可以帮助我们轻松处理各种数据问题。 我们来看如何创建诸葛亮——这个Data…

实现UDP通信(socket接口函数扩展)

一、write/read到send/recv 函数原型&#xff1a; ussize_t send(int sockfd, const void *buf, size_t len, int flags);//发送 ussize_t recv(int sockfd, void *buf, size_t len, int flags);//接收 前三个参数同read/write一样&#xff1b; ussize_t read(int fd, voi…

2023CCPC河南省赛 VP记录

感觉现在的xcpc&#xff0c;风格越来越像CF&#xff0c;不是很喜欢&#xff0c;还是更喜欢多点算法题的比赛 VP银了&#xff0c;VP银也是银 感觉省赛都是思维题&#xff0c;几乎没有算法题&#xff0c;感觉像打了场大型的CF B题很简单没开出来&#xff0c;一直搞到最后&…

Android crash 流程详解(二):NE

源码基于&#xff1a;Android R 接上一篇博文&#xff1a;《Android crash 流程详解(一)&#xff1a;JE》 0. 前言 在上一篇博文剖析了java layer exception 的处理流程&#xff0c;本文将继续剖析 Android crash 的另一部分&#xff0c;即 native 端的 crash&#xff0c;又称…

【JavaEE】网络编程之UDP套接字

目录 1、网络编程基础 2、UDP数据报套接字编程 2.1.DatagramSocket API&#xff08;方法&#xff09; 2.2、DatagramPacket API&#xff08;方法&#xff09; 2.3、InetSocketAddress API 3、基于UDP socket写一个回显服务器 3.1、服务器端 3.2 、客户端 3.3、完…

机器学习常识 21: 卷积神经网络

摘要: 卷积操作保留体现了空间相关性. 1. 卷积操作 图 1. 卷积操作 Valid 方式. 图 1 下平面标定的 3 3 3 \times 3 33 区域, 对应于个 3 3 3 \times 3 33 卷积, 这 9 9 9 个数对应着相乘, 然后相加, 获得了上平面标定的 1 1 1 个小区域的值. 注意这里不是矩阵的乘法. 卷…

《大数据技术与应用》课程实验报告|week12|实验8|Pig——高级编程环境 验证评估函数

目录 一、实验内容 二、实验目的 三、实验设备 四、实验步骤 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 步骤八 步骤九 步骤十 步骤十一 步骤十二 步骤十三 步骤十四 步骤十五 步骤十六 五、实验结果 六、实验小结 一、实验内容 验证19.5节中的…

Apache网页的日志分割与优化

Apache网页的日志分割与优化 一、日志分割的作用二、rotatelogs 分割1.修改apache服务的主配置文件2.创建分割日志保存目录3.浏览器访问 三、AWStats 分析系统1.将安装AWStats 所需软件包传到/opt目录下2.安装 AWStats 软件包3.为要统计的站点建立配置文件4.修改自动生成的 aws…

电表的698通信协议

原文连接&#xff1a;https://blog.csdn.net/ss86655/article/details/109997891 该协议规定了用电信息的数据交换过程&#xff0c;一般用于主站与电能表之间、终端与电能表之间的数据交换&#xff0c;主站与终端一般用不同的客户机地址来区分。1、通信架构 有两种方向的数据…

linux系统中代码突然无法执行,没有权限访问文件,但是可以在文件管理器中查看文件

前言 这段时间遇到了一个非常离谱的问题&#xff0c;我的只要设计移动硬盘中数据的所有代码突然无法运行&#xff0c;我折腾了很久一直觉得是移动硬盘坏了&#xff0c;但拿到其他电脑上去是可以运动的。今天终于偶然发现了问题。 直接说结论&#xff1a; 移动硬盘的挂载点变了…

SQL-DML、DQL查询数据

SQL-DML、DQL查询数据 1 DML DML主要是对数据进行增&#xff08;insert&#xff09;删&#xff08;delete&#xff09;改&#xff08;update&#xff09;操作。 1.1 添加数据 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);给全部列添加数据 INSERT…

MySQL数据库性能优化技巧介绍

MySQL是目前最流行和广泛使用的开源关系型数据库之一&#xff0c;随着数据量的增长和访问负载的提高&#xff0c;优化数据库性能变得至关重要&#xff0c;以确保系统能够高效地处理大量的并发请求。本文将记录一些MySQL数据库性能优化的技巧&#xff0c;提高数据库的运行效率&a…

程序员——应届生毕业,竟有20k高薪岗位?!

马士兵优极限训练营让我在技术和个人能力上都有了很大的提升。在未来的职业生涯中&#xff0c;我会继续努力&#xff0c;不断学习和成长&#xff0c;为自己和社会做出更大的贡献 01 选择大数据 只因更有前景 我是计算机专业出身&#xff0c;但是在大学的时候我对大数据行业更…

vue3 ---- 递归组件生成menu菜单 路由守卫鉴权

目录 递归组件​ el-menu 父组件 子组件 路由 Vue路由守卫实现登录鉴权 全局守卫 路由独享的守卫 组件内的守卫 完整的导航解析流程 对于一些有规律的DOM结构&#xff0c;如果我们再一遍遍的编写同样的代码&#xff0c;显然代码是比较繁琐和不科学的&#xff0c;而且…