微信小程序-云调用

463 阅读2分钟

文档

文档 - 第一个云调用函数

创建第一个云函数

步骤

  • 1,在根目录创建一个目录(functions),用于存放云函数
  • 2,在小程序根目录找到project.config.json,新增cloudfunctionRoot字段,指定(functions)本地目录作为云函数本地根目录
{
   "cloudfunctionRoot": "./functions/"
}
  • 3,完成后,云函数目录变成“云目录图标”

  • 4,接着创建一个云函数,在云函数根目录右键,选择创建一个Node.js云函数,命名为"checkContent",开发者工具在本地创建出云函数目录和入口文件index.js,同时线上环境创建出对应的云函数

index.js

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

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

云函数传入两个参数 1,event对象,2,context对象

event对象

event是传给云函数参数 + 外加后端注入小程序的openid和小程序appid

context对象 context对象包含了调用信息和运行状态,可以用它来了解服务器运行情况。

例子

云函数index.js

exports.main = async (event, context) => {
    return {
        sum : event.a + event.b
    }
}

小程序端调用

wx.cloud.callFunction({
    name: "cloudFunctionName",
    data: {
        a: 10,
        b: 20
    },
    success: function (res) {
        console.log(res)  // 30
    }
})

注意

  • 0, 云函数有一个默认请求超时:3s,如果在识别一些大图时,超过默认会失败,最长可设置20s
  • 1, 云函数内需要建立一个config.json,存放要使用云函数

{
  "permissions": {
    "openapi": [
      "ocr.bankcard",
      "uploadFile",
      "getTempFileURL" 
    ]
  }
}

  • 3,云函数中使用 wx-server-sdk 需在对应云函数目录下安装 wx-server-sdk 依赖,在创建云函数时会在云函数目录下默认新建一个 package.json 并提示用户是否立即本地安装依赖
  • 4,cloud.init()
初始化云函数,env:1,云函数执行环境,填写环境id,2,获取当前环境

// 1,云函数执行环境,填写环境id
// 给定字符串环境 ID:接下来的 API 调用都将请求到环境 some-env-id
cloud.init({
  env: 'some-env-id'
})

// 2,获取当前环境
// 给定 DYNAMIC_CURRENT_ENV 常量:接下来的 API 调用都将请求到与该云函数当前所在环境相同的环境
// 请安装 wx-server-sdk v1.1.0 或以上以使用该常量
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})


关于坑

  • 1,运行返现 error -1

到更目录app.js onLaunch 添加

// 初始化云函数init
wx.cloud.init({
  traceUser: true,
})