小程序开放平台

文档中心
快速入门
开发准备
本地开发
部署发布
功能服务
函数服务
函数服务概述
云服务开发指南
调试器使用指南
云服务密钥
日志查询
公共错误码
免登录
常见问题

云服务开发指南

开发指南
>
功能服务
>
函数服务
>
云服务开发指南
>
更新时间:2026-01-20 16:10:56

开发者可在云开发界面申请开通云服务并创建云环境,在web界面内使用Node.js语言开发相关接口功能后,供前端相关应用(小程序,小游戏,小组件等)侧使用。

操作指引

云服务开通

当前云开发功能已白名单开放,首次进入页面时可以点击「申请开通」按钮,等待审核通过后即可进行体验。

申请开通云开发界面

开通云开发填写相关信息

创建云环境

在云环境列表界面点击创建环境,填入环境名称与描述,即可创建云环境

创建云环境

填写云环境信息

当然,我们也可以通过cli工具进行云环境的创建,具体请阅读小红书云CLI工具

cli云环境创建

开发云函数

我们可以通过cli唤起云函数调试器,在调试器内进行云函数的开发,具体请阅读使用 CLI 10分钟部署云函数

云函数调试器界面

如上图,左侧为对应文件夹,云函数文件和 agent-cloudbase-functions.json 文件,中间为函数开发界面,右侧为云函数调试界面。

创建云函数文件或文件夹

在左侧选择对应icon可选择创建文件夹和js文件, 右击相关文件后,可以进行相关新增、删除操作。

新增文件/文件夹

选中对应文件夹后,选择新建文件,填入js文件名称和函数描述后,可在对应文件夹下新建js文件。

右击操作

注意:相同目录下不支持js文件和文件夹重名。

配置文件说明

云函数项目需要在根目录配置

agent-cloudbase-functions.json
文件,用于定义云函数的组织结构、路由映射。具体配置说明请参考:函数配置文件

开发与调试云函数

在文本编辑器界面开发云函数业务逻辑功能,目前支持 CommonJS 规范。右侧可对当前云函数进行调试,如下图。

调试界面

调试具体功能可见:调试器使用指南

event和context 功能具体可见:云函数服务端API

发布云函数

在对云函数代码进行充分调试后,可选择发布代码,如下图,点击发布后会跳转至发布页面,调试器界面支持查看相关日志信息,进行发布。

发布按钮

发布部署界面:

发布信息填写

发布日志面板

调用云函数

在部署完成后可通过 callContainer 方式调用

具体可阅读云函数客户端API

开发指南

云函数调用方式&功能函数调用方式

线上调用

目前云函数服务支持通过 callContainer 方式调用,具体调用方式如下:

callContainer调用

callContainer 调用

在小程序开发者工具内采用 callContainer 调用,调用路径需要与

agent-cloudbase-functions.json
中配置的
triggerPath
保持一致,代码如下:

javascript
const cloud = xhs.createCloud({
    serviceID: 'your-service-id'  // 云环境ID
});
cloud.callContainer({
    path: '/user/profile',  // 对应 agent-cloudbase-functions.json 中的 triggerPath
    init: {
        method: 'POST',
        header: {
            'content-type': 'application/json',
        },
        body: {
            userId: 'u10001'
        },
        timeout: 60000, //ms
    },
    success: ({statusCode, header, data}) => {
        console.log('调用成功', JSON.parse(data));
    },
    fail: (err) => {
        console.error('调用失败', err);
    },
    complete: () => {
        console.log('调用完成');
    }
})

调用路径

callContainer 调用时路径必须与

agent-cloudbase-functions.json
中配置的
triggerPath
一致。

例如,如果配置文件中配置了:

{
  "functionsRoot": "./src",
  "functions": [
    {
      "name": "userProfile",
      "directory": "./user",
      "source": "index.js",
      "triggerPath": "/user/profile"
    }
  ]
}

则调用时

path
应为
/user/profile

函数导出格式

云函数必须按照配置文件中

name
字段对应的名称导出,函数签名为
async (event, context) => {}

javascript
// src/user/index.js
exports.userProfile = async function userProfile(event, context) {
  const payload = event?.params || {};
  const userId = payload.userId;
  
  return {
    ok: true,
    code: 0,
    message: "SUCCESS",
    data: {
      userId: userId
    }
  };
};

函数导出格式代码示例

注意:函数名必须与配置文件中

name
字段完全一致,否则调用时会报错。

功能函数调用

按照 CommonJS 语法可在其他文件中导出功能函数,供云函数内部调用使用:

javascript
// utils/helper.js
exports.formatDate = function(date) {
  return new Date(date).toISOString();
};

// src/user/index.js
const { formatDate } = require('../../utils/helper');

exports.userProfile = async function userProfile(event, context) {
  const formattedDate = formatDate(new Date());
  return {
    ok: true,
    date: formattedDate
  };
};

注意:功能函数不会被直接调用,只能被云函数内部引用使用。如果需要在线上直接调用,需要在

agent-cloudbase-functions.json
中配置对应的函数和
triggerPath

功能函数书写示例

发布方式

开发完云函数功能后,点击发布,进入云函数发布页面。

选择对应文件和填入发布备注,进行发布。

云函数发布

调试时的调用结果与线上调用保持一致。

我们也可以在云开发控制台点击「查看详情」查看云环境的相关信息

查看详情

查看云函数列表详情

注意事项

避免使用全局变量

云函数底层运行时多实例的,且会根据请求量实时动态扩缩容,无法保证每一次请求都访问到同一个实例中。因此,应该尽量避免使用全局变量来保存值,因为这将导致不符合预期的结果。

例如:

javascript
// Using global variables can lead to unexpected results
let someGlobalVar = 0;

exports.myFunction = async function myFunction(event, context) {
  // The original value of `someGlobalVar` is unpredictable
  someGlobalVar += 1;

  // An unexpected return value
  return {
    someGlobalVar,
  };
}

避免写死循环代码

切记不要写死循环等高危代码,可能会导致后续调试功能不可用。

超时时间

目前线上调用的默认超时时间为60s, 调试时默认超时时间是10s,因此建议不要写执行时间超过10s的异步代码,如下:

错误处理

针对开发者代码执行出错,系统会默认返回code 为-1 及对应错误信息,对应HTTP 状态码为500,HTTP状态码不可修改。

对应错误也会在日志平台打印。

对于系统错误,例如针对开发者输入的path 找不到对应执行的云函数,也会抛出对应错误code和错误内容,如下:

返回内容

若返回为一个非法对象,则系统会默认抛出相关错误,如下:

调用路径

线上调用路径是与

agent-cloudbase-functions.json
中配置的
triggerPath
强绑定的,因此在修改配置文件中的
triggerPath
时,需要同步更新小程序侧的调用路径。同时,函数名称必须与配置文件中
name
字段保持一致。