文档管理中心

Node.js

入口方法

入口方法定义如下:

收起
自动换行
深色代码主题
复制
  1. module.exports.myHandler = function(event, context, callback, logger)
  • myHandler:入口方法名称。
  • event:调用方传递的事件对象,JSON格式。具体内容请参见event对象
  • context:函数运行时上下文对象,封装了日志接口、回调接口、环境变量env对象等。
  • callback:事件处理结果。
  • logger:记录日志。

函数必须通过显式调用callback(object)将事件处理结果返回给AGC,结果可以是任意对象,但必须与JSON.stringify兼容,AGC会将结果转换成JSON字符串后,返回给调用方。callback执行完成,函数即执行结束。

完整的Node.js 20.x云函数示例代码请参考函数示例

日志记录

您可在代码中使用logger接口记录日志,后端已通过global.logger全局定义,目前支持四种级别:
  • logger.debug()
  • logger.error()
  • logger.warn()
  • logger.info()

获取环境变量

您可在代码中使用context.env.key访问环境变量,获取环境变量env1示例如下:
收起
自动换行
深色代码主题
复制
  1. let env1 = context.env.env1;

若环境变量未配置,则会返回环境变量为undefined。

异常处理

您可以在函数代码中捕获异常,封装成error对象返回给调用方。对于函数执行期间被平台捕获的异常,平台同样以error对象形式返回给调用方。error对象定义如下。

收起
自动换行
深色代码主题
复制
  1. error
  2. {
  3. "code": xxxxxx,
  4. "message": "xxxxxxxx"
  5. }

其中code为错误码,message为错误码的描述信息。

示例代码如下:

收起
自动换行
深色代码主题
复制
  1. try {
  2. logger.info(JSON.stringify(event));
  3. let result = { "message": "success" };
  4. callback(result);
  5. } catch (err) {
  6. let error = {
  7. code: 400,
  8. message: err.message
  9. }
  10. callback(error);
  11. }

函数示例

示例函数如下:

说明

示例代码中入口方法myHandler()的返回值类型仅供您参考,您可以根据实际需要定义。

收起
自动换行
深色代码主题
复制
  1. /**
  2. * Describe the basic method of Cloud Functions
  3. */
  4. let myHandler = function(event, context, callback, logger) {
  5. // example of display environment variables
  6. let env1 = context.env.env1;
  7. // example of display logs
  8. logger.info("Test info log");
  9. logger.warn("Test warn log");
  10. logger.debug("Test debug log");
  11. logger.error("Test error log");
  12. logger.info("--------Start-------");
  13. try {
  14. let startTime = new Date().getTime();
  15. let endTime = startTime;
  16. let interval = 0;
  17. startTime = process.uptime() * 1000;
  18. // print input parameters and environment variables
  19. logger.info("request: " + JSON.stringify(event.request));
  20. logger.info("env1: " + env1);
  21. endTime = process.uptime() * 1000;
  22. interval = endTime - startTime;
  23. logger.info("intervalTime: " + interval);
  24. logger.info("--------Finished-------");
  25. let res = new context.HTTPResponse(context.env, {
  26. "res-type": "context.env",
  27. "faas-content-type": "json",
  28. }, "application/json", "200");
  29. res.body = {"intervalTime": interval};
  30. callback(res);
  31. } catch (error) {
  32. logger.error("--------Error-------");
  33. logger.error("error: " + error);
  34. callback(error);
  35. }
  36. };
  37. module.exports.myHandler = myHandler;

准备函数部署包

函数部署包示例:nodejs_demo.zip

您上传的Node.js函数部署包须使用如下结构,处理程序所在代码文件必须在zip根目录下,依赖项放到node_modules目录下,可通过npm工具的相关命令,安装与管理依赖。

收起
自动换行
深色代码主题
复制
  1. my-function.zip
  2. |---- index.js
  3. |---- node_modules
  4. |----async
  5. |----async-listener
在 指南 中进行搜索
请输入您想要搜索的关键词