uni-app使用微信小程序云函数的步骤示例
作者:爱河h 发布时间:2024-05-13 09:10:51
创建云函数目录
首先,我们需要在uni-app项目文件夹下,创建一个云函数目录,路径随意,我这里是functions
。然后先随便在里面放一些文件,这里以new_file.css
为例。(放文件的原因是:确保编译成小程序后cloudfunctions文件夹存在。如果该文件夹下没有文件,默认是不会在微信小程序开发平台中显示该文件夹的。)
修改manifest.json
在uni-app根目录下,修改manifest.json
中的微信小程序项,结构如下
"mp-weixin" : {
/* 小程序特有相关 */
"appid" : "wxd7de467f6e6cf741",
"cloudfunctionRoot": "./functions/", // 这一行就是标记云函数目录的字段
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
}
编写vue.config.js
我们在项目根目录创建vue.config.js文件
写入以下内容(如路径不一样请做相应适配)
const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{
from: path.join(__dirname, 'functions'),
to: path.join(__dirname, 'unpackage/dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'functions')
}
])
]
}
}
编译运行
发现提示如下内容
说明未安装copy-webpack-plugin
插件,我们手动安装一下。
然后编译运行,发现微信开发者工具里面出现以下内容。
截止目前,已打通Hbuilder X到微信开发者工具的自动复制,即已解决本文的核心内容。以下为进一步测试。
创建云函数
(在微信开发者工具操作)我们在云函数根目录上右键,在右键菜单中,可以选择创建一个新的 Node.js 云函数,我们将该云函数命名为check。开发者工具在本地创建出云函数目录和入口 index.js 文件,同时在线上环境中创建出对应的云函数。创建成功后,工具会提示是否立即本地安装依赖,确定后工具会自动安装 wx-server-sdk。我们会看到以下内容。
创建好后将其同步复制到uni-app项目,即可为以后自动同步行方便,又可避免在输出文件夹中云函数的意外丢失。至此,相关文件编写工作转至Hbuilder X
,云函数上传部署依旧在微信开发者工具。
编写云函数
默认的云函数只是一个返回用户基本数据的内容,我们将其修改至满足我们的业务需求,以内容安全云调用为例。
在云函数文件中写入以下内容
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async(event, context) => {
try {
console.log('待检测文本:' + event.content);
let result = await cloud.openapi.security.msgSecCheck({
content: event.content
})
console.log('result:' + JSON.stringify(result));
if (result && result.errCode.toString() === '87014') {
return {
code: 300,
msg: '内容含有违法违规内容',
data: result
}
} else {
return {
code: 200,
msg: 'ok',
data: result
}
}
} catch (err) {
if (err.errCode.toString() === '87014') {
return {
code: 300,
msg: '内容含有违法违规内容',
data: err
}
}
return {
code: 400,
msg: '调用security接口异常',
data: err
}
}
}
权限申明
在函数目录下,创建一个config.json
,文档说会自动创建,但是实际操作时可能不会自动创建。config.json
内容如下。
{
"permissions": {
"openapi": [
"security.msgSecCheck" //接口名
]
}
}
小程序调用云函数
wx.cloud.init() //调用前需先调用init
wx.cloud.callFunction({
name: 'check',
data: {
"content": this.contents.join()
}
}).then(res => {
console.log(res.result)
if (res.result.code == 300) {
uni.showModal({
title: "温馨提示",
content: "你所输入的内容可能含有违法违规内容,不支持进行下一步操作"
})
return
} else {
... // 你要进行的操作
}
})
效果展示
如果第一次出现错误:invalid scope 没有权限,请先开通云服务
这是因为 小程序开发选择了云服务开发,但是没有开通云服务导致,点击微信开发工具上方的 云开发按钮,开通云开发。
新建云函数( * 并部署后会自动出现)
来源:https://www.cnblogs.com/xhxdd/p/12022051.html


猜你喜欢
- 起源当同一个远程服务器有多个人使用的时候,想知道服务器是否有人在用,我们不能直接的去登录,因为这样可能会把对方挤下来,这并不友好,所以这里提
- 本文实例讲述了php多进程中的阻塞与非阻塞操作。分享给大家供大家参考,具体如下:我们通过pcntl_fork来创建子进程,使用pcntl_w
- os.stat(path) :用于在给定的路径上执行一个系统 stat 的调用。path:指定路径返回值:st_mode: inode 保护
- 最近新接触Mysql,昨天新建一个表用于存储表结构信息:create table tablist(TABLE_SCHEMA varchar(
- 1.random.random():会随机生成0-1之间的小数例如:2.random.uniform(min,max):会随机生成 min
- 概述数据分析 (Data Analyze) 可以在工作中的各个方面帮助我们. 本专栏为量化交易专栏下的子专栏, 主要讲解一些数据分析的基础知
- 一、定义新的自动求导函数在底层,每个原始的自动求导运算实际上是两个在Tensor上运行的函数。其中,forward函数计算从输入Tensor
- 某天和一个产品经理聊起:以用户为中心是一个理想概念。经历了太多的项目,看到了太多的限制条件。而我向来不是一个有着设计洁癖的完美主义者。做为所
- PHP程序都要用MYSQL,如果没有MYSQL,就不能用它们.第一:配置数据库信息,改成自己所需的;第二:导入数据库;第三:安装wamp5
- Access数据库,同时操作大量记录(9500条以上)时报错。错误提示:Microsoft JET Database Engine 错误 &
- 本文实例讲述了python实现通过队列完成进程间的多任务功能。分享给大家供大家参考,具体如下:1.通过队列完成进程间的多任务import m
- 本文实例讲述了JavaScript闭包与作用域链。分享给大家供大家参考,具体如下:闭包定义闭包指的是有权访问另一个函数作用域中的变量的函数。
- Insus.NET解决这个问题,只有创建另外一个表,将存储用户决定要跟踪的表,以及这个表中需要跟踪的字段。 还要创建另外一个表[Audit]
- python绘制横向水平柱状条形图Bar,供大家参考,具体内容如下import matplotlibimport randomimport
- 一、方式一select * from student for updatestudent表需要操作人修改完commit之后才可以做其他的操作
- 导语哈喽!哈喽!我是木木子!今日游戏更新——中国象棋上线啦!中国象棋是一种古老的棋类游戏,大约有两千
- import urllib.parse,os.path,time,sys,re,urllib.requestfrom http.client
- 一:脚本需求利用Python3查询网站权重并自动存储在本地数据库(Mysql数据库)中,同时导出一份网站权重查询结果的EXCEL表格数据库类
- 线程实现Python中线程有两种方式:函数或者用类来包装线程对象。threading模块中包含了丰富的多线程支持功能:threading.c
- 作者:Roland Smart原文链接:http://www.adaptivepath.com/ideas/newsletter/archi