更新时间:2025-12-09 gmt 08:00

开发node.js事件函数-j9九游会登录

node.js的事件函数开发,支持本地开发后上传代码文件,也支持直接在functiongraph控制台创建函数在线编辑代码。

关于node.js函数的接口定义以及sdk接口说明请参考node.js函数开发概述

约束与限制

  • callback返回的第一个参数不为null,则认为函数执行失败,会返回定义在第二个参数的http错误信息。
  • 当使用apig触发器时,函数返回必须使用示例中output的格式, 函数body参数仅支持返回如下几种类型的值。
    • null:函数返回的http响应body为空。
    • []byte: 函数返回的http响应body内容为该字节数组内容。
    • string:函数返回的http响应body内容为该字符串内容。
  • 通过apig服务调用函数服务时,isbase64encoded的值默认为true,表示apig传递给functiongraph的请求体body已经进行base64编码,需要先对body内容base64解码后再处理。
    函数必须按以下结构返回字符串。
    {
        "isbase64encoded": true|false,
        "statuscode": httpstatuscode,
        "headers": {"headername":"headervalue",...},
        "body": "..."
    }

步骤一:创建node.js函数工程

  1. 打开本地文本编辑器,编写函数代码,将文件命名为“index.js”
    • 以下代码为同步形式入口函数:
      exports.handler = function (event, context, callback) {
          const error = null;
          const output = {
              'statuscode': 200,
              'headers':
              {
                  'content-type': 'application/json'
              },
              'isbase64encoded': false,
              'body': json.stringify(event),
          }
          callback(error, output);
      }
    • 以下代码为异步形式入口函数,运行时 8.10 及以上支持:
      exports.handler = async (event, context) => {
          const output =
          {
              'statuscode': 200,
              'headers':
              {
                  'content-type': 'application/json'
              },
              'isbase64encoded': false,
              'body': json.stringify(event),
          }
          return output;
      }

      如果您的node.js函数中包含异步任务,需使用promise以确保该异步任务在当次调用执行,可以直接在return中声明promise,也可以await执行该promise。

      暂时不支持在函数响应请求后继续执行异步任务的能力。

      exports.handler =  async(event, context ) => {
          const output =
          {
              'statuscode': 200,
              'headers':
              {
                  'content-type': 'application/json'
              },
              'isbase64encoded': false,
              'body': json.stringify(event),
          }
       
          const promise = new promise((resolve, reject) => {
              settimeout(() => {
                  resolve(output)
              }, 2000)
          })
          return promise;
          // another way 
          // res = await promise;
          // return res;
      }

      异步执行函数说明:

      如果期望函数先响应,随后继续执行任务,即异步执行函数,可以通过sdk/api调用functiongraph的异步执行函数接口实现。

      如需使用apig触发器,可以单击生成的apig触发器名称,跳转到apig服务页面,选择asynchronous(异步)方式调用,具体操作步骤可参考配置函数的异步调用

  2. 打包函数工程。以使用异步形式入口为例。

    函数工程创建以后,会得到以下目录,选中工程所有文件,打包成zip文件并命名为“fss_examples_nodejs.zip”。打包时请确保解压后,入口函数所在的文件位于根目录。

    您也可以直接下载打包好的node.js函数样例工程包使用。

    图1 打包

步骤二:创建functiongraph函数

  1. 登录,右上角单击“创建函数”
  2. 图2所示,创建一个空白的node.js事件函数,单击“立即创建”进入函数详情页。
    图2 创建node.js函数
  3. 图3所示,单击“上传代码 > zip文件”,上传步骤一:创建node.js函数工程打包的fss_examples_nodejs.zip文件。
    上传的代码将在函数工作流控制台自动部署,如修改代码,请再次单击“部署代码”
    图3 上传程序包

修改函数执行入口:

在functiongraph控制台左侧导航栏选择“函数 > 函数列表”,单击需要设置的“函数名称”进入函数详情页,选择“设置 > 常规设置”,配置“函数执行入口”参数,如图4所示。
图4 函数执行入口参数

步骤三:测试函数

  1. “代码”页签下,单击“测试”,弹出“配置测试事件”弹窗,如图5所示配置测试事件“test”,单击“创建”。
    图5 配置测试事件
  2. 选择已配置的测试事件“test”,单击“测试”。
  3. 图6所示,右侧出现“执行结果”窗口,可测试函数是否执行成功。
    图6 测试结果

函数执行结果说明

函数执行结果由3部分组成:函数返回、执行摘要和日志。

表1 执行结果说明

参数项

执行成功

执行失败

函数返回

返回函数中定义的返回信息。

返回包含错误信息和错误类型的json文件。格式如下:

{
    "errormessage": "", 
    "errortype":"", 
}

errormessage:runtime返回的错误信息

errortype:错误类型

执行摘要

显示请求id、配置内存、执行时长、实际使用内存和收费时长。

显示请求id、配置内存、执行时长、实际使用内存和收费时长。

日志

打印函数日志,最多显示4kb的日志。

打印报错信息,最多显示4kb的日志。

相关文档

相关文档

网站地图