You need to enable JavaScript to run this app.
文档中心
函数服务

函数服务

复制全文
下载 pdf
Node.js 运行时
开发方法
复制全文
下载 pdf
开发方法
对于 Node.js 函数,veFaaS 使用您提供的index.js文件中定义的 handler 入口函数启动函数服务进程,对请求事件进行处理。示例代码如下:​
​
// vefaas-nodejs14-default​
exports.handler = async function handler (event, context) {​
return {​
statusCode: 200,​
headers: {'Content-Type': 'application/json'},​
body: JSON.stringify({ 'vefaas-nodejs14-default': 'hello world'}),​
};​
};​
​
如果函数有一些全局的初始化逻辑,如与数据库建立连接,初始化下游 Client 等,推荐在 handler 函数的基础上增加 initializer 函数,用于函数实例初始化。示例代码如下:​
​
// vefaas-nodejs14-default​
exports.handler = async function handler (event, context) {​
return {​
statusCode: 200,​
headers: {'Content-Type': 'application/json'},​
body: JSON.stringify({ 'vefaas-nodejs14-default': 'hello world'}),​
};​
};​
​
// vefaas will try to do initializer when start up the instance, to avoid cold start from user perspective.​
// initializer will only be executed for one time when there is no exception.​
// otherwise initializer will be executed again before every invoke, till successfully inited.​
exports.initializer = async function (context) {​
console.log('initializer begin');​
// replace the following line, with the real init logic​
await new Promise(resolve => setTimeout(resolve, 3 * 1000));​
console.log('initializer end');​
};​
​
入口函数 handler​
handler 是函数请求处理逻辑的入口。handler 包含了您的核心业务逻辑,用于处理事件请求,并最终返回一个可选返回值。handler 函数的签名如下所示。​
​
exports.handler = async function handler (event, context) {​
return {​
statusCode: 200,​
headers: {'Content-Type': 'application/json'},​
body: JSON.stringify({ 'vefaas-nodejs14-default': 'hello world'}),​
};​
};​
​
当 veFaaS 触发您的 handler 函数时,Node.js 运行时会向您的 handler 函数传递两个入参 event 和 context 。​
event 参数​
event 参数用于向您的 handler 函数传递触发事件数据。event 参数的类型为 Object。​
event 参数的具体内容根据不同触发事件类型而变化,具体请参考 触发器事件消息结构。​
context 参数​
context 参数用于向您的 handler 函数传递运行时信息。context 参数包含的内容如下所示。​
​
{​
"requestId": "888590af-cb2e-4ad4-86b3-2b03d4a7****", # 请求 ID​
}​
​
参数说明​
​
参数​
说明​
requestId​
系统自动生成的 request uuid,请从 handler 函数里传入的 context 中获取。​
​
返回值​
函数 handler 的返回值为Object类型,返回值中只有statusCode、headers、body三个键值对最终会返回给请求方。​
如果您选择不返回任何值,veFaaS 会默认返回 200 的接口返回码。​
函数 handler 的返回值示例代码如下所示。​
​
{​
"statusCode": 200, # 返回码,语义同 http 状态码。默认值为 200。​
"headers": { # 可选值, http 触发器返回的请求 header 。​
"Content-Type": "application/json"​
},​
"body": JSON.stringify({​
"message": "hello world" # 可选值, http 触发器返回的 body​
})​
}​
​
参数说明​
​
参数​
是否必填​
说明​
statusCode​
可选​
接口返回码,语义与通用的 HTTP status code 相同。​
若不填参数值,默认返回码为 200。​
headers​
可选​
返回消息头。包括如下二级参数:Content-Type:消息体类型,推荐使用默认值application/json。​
body​
可选​
返回消息体。包括如下二级参数:message:返回消息内容。​
​
初始化函数 Initializer​
Initializer是函数的初始化逻辑入口。单个函数内的实例级别全局初始化,推荐使用 initializer 函数进行。veFaaS 目前支持的 initializer 函数签名如下,用户可以通过返回 error 来标识初始化失败。​
​
exports.initializer = async function (context) {​
console.log('initializer begin');​
// replace the following line, with the real init logic​
await new Promise(resolve => setTimeout(resolve, 3 * 1000));​
console.log('initializer end');​
};​
​
使用环境变量​
您可以在控制台配置函数运行时所需的环境变量,并在代码中读取对应的环境变量,用于函数处理逻辑。veFaaS 会将所配置的环境变量注入到函数运行所在的容器中,程序可以通过process.env获取。​
例如:您配置的环境变量键值对为HELLO:VE_FAAS,运行环境读取该环境变量的代码示例如下:​
​
console.log(process.env.HELLO); // 输出: VE_FAAS​
​
​
最近更新时间:2025.03.11 17:02:16
这个页面对您有帮助吗?
有用
有用
无用
无用