所有文档

          函数计算 CFC

          Node.js

          目前CFC支持的Node.js开发语言包括如下版本:

          • Node.js 12.2
          • Node.js 10.15
          • Node.js 8.5(已下线,目前存量Node.js 8.5函数仍可运行,但无法创建该运行时的新CFC函数)

          函数代码

          一个简单的Node.js函数示例代码如下所示:

          exports.handler = (event, context, callback) => {
              callback(null, "Hello world!");
          };

          执行函数

          在创建CFC函数时,需要指定处理程序以让CFC能够找到入口函数。 对于Node.js函数, 处理程序为您函数中的"module-name.export"值,例如,填写"index.handler"则表示调用的是index.js中的export.handler函数。 image.png

          入参

          Node.js函数入参包括event, context和callback,其中callback是可选参数

          • event参数: 您调用本函数时传入的事件数据,其数据类型是一个object
          • context参数: CFC向函数提供的运行时信息, 其数据类型是一个object
          • callback参数(可选):该参数用于返回信息。

          返回信息

          Node.js采用异步编程模型,您的函数需要使用callback入参返回信息。callback的语法如下:

          callback(Error error, Object result); 

          其中:

          • error(可选参数): 在函数执行内部失败时使用此参数返回错误信息,成功的情况下设置为null。
          • result(可选参数): 使用此参数返回函数的执行结果。result可以是任意类型。
          • 您的函数在callback被调用后立即返回,重复调用 callback 只接受第一次调用的结果。需要确保所有任务在 callback 调用之前完成,否则有些任务可能不会被运行。例如调用下面的函数,将返回 hello world。
          exports.handler = (event, context, callback) => {
            callback(null, 'hello world');
            callback(null, 'done');
          };

          该函数的返回结果如下:

          image.png

          • 如果你的函数里未调用callback,则函数执行将会超时。
          exports.handler = (event, context, callback) => {
             console.log('hello world');
          };

          该函数示例代码执行结果如下:

          image.png

          注意:CFC函数根据您选择的触发器的不同,函数调用方式也不同,对函数的返回结果的处理方式不同。

          • 同步调用(RequestResponse): 使用同步调用时,结果会以序列化的JSON格式返回, 调用方可以根据返回值进行后续处理。
          • 异步调用(Event): 异步调用时,调用方法触发函数后立即返回,函数返回值会被丢弃。

          异常处理

          如上对callback入参的说明,您可以使用callback的第一个参数返回错误,如:

          exports.handler = (event, context, callback) => {
              callback(new Error('myError'))
          };

          该函数的返回结果如下:

          image.png

          日志

          您可以在程序中使用如下语句来完成日志输出:

          • console.log()

          使用内置模块

          函数计算的Node.js运行环境包含了Node.js标准模块,您可以直接引用这些模块。

          使用自定义模块

          如果您需要使用自定义模块,则需要将您的自定义模块与代码一起打包上传,您可以通过以下方式进行依赖管理。

          使用BSAM-CLI本地开发工具

          BSAM_CLI 工具使用说明见链接,您可以使用该工具创建一个Node.js应用,本地编写并调试代码后进行打包上传。

          // init命令初始化一个工作目录,指定runtime为nodejs10
          $ bsam init --runtime nodejs10
          // 若您的函数依赖第三方库,BSAM CLI可帮您自动安装这些依赖
          $ bsam local install 
          // 在本地开发和测试完函数后,可以使用bsam package和bsam deploy命令部署到CFC
          $ basm package
          $ basm deploy

          使用Baidu Serverless VSCode 插件

          Baidu Serverless VSCode Extension 是百度云 Serverless 产品 CFC 的 VSCode 插件,该插件可以帮您快速创建、管理本地的 CFC 函数,具体使用说明见链接,也能帮助您管理和打包第三方依赖。

          上一篇
          PHP
          下一篇
          使用BSAM-CLI调试函数