Appearance
调试/调用云函数
为了解决云函数本地调试不方便这个痛点,@ifanrx/faas 内置了云函数 debug 脚本,可通过以下命令进行云函数调试
bash
Usage: npx debug-faas [options]
Options:
-V, --version output the version number
-e, --env-id <BAAS_ENV_ID> 知晓云测试环境的 env id
--without-env 当知晓云应用没有创建测试环境时使用,请谨慎使用
--only-invoke 只执行调用云函数步骤,跳过重新构建和部署云函数步骤
--silent 屏蔽控制台日志输出
-s <BAAS_QA_SERVICE> 启用 qa-service
--qa 在 QA 应用上 debug
-h, --help display help for command
- 一般情况下,env-id 是必填参数,否则会在正式环境执行云函数
- 若当前知晓云应用无测试环境,可使用 --without-env,无需传入 <BAAS_ENV_ID>
- 当云函数内容没有变动,需要通过调整参数多次调用云函数时,可使用 --only-invoke,跳过构建和部署云函数步骤,加快 debug 效率
执行 debug-faas 命令后,会列出当前 function 文件夹下的所有云函数,选择目标云函数并回车即可对该函数进行调试。此处的选择是支持模糊搜索的,当云函数数量较多时可使用搜索功能
debug 的原理是在部署一个加上 debug_
前缀的同名云函数到知晓云,使用开放 API 执行云函数后并将执行日志输出到终端
通过 @ifanrx/scaffolder
创建的云函数项目已经内置了调试命令,其他项目可将以下命令加到 package.json
中
json
{
"script": {
"debug": "debug-faas --env-id YOUR_ENV_ID",
"debug:invoke": "pnpm debug --only-invoke"
}
}
使用 mock 执行云函数
在云函数根目录下创建 mock 文件夹,创建与函数同名的 mock 文件,如 mock/<function>.private.js
或者 mock/<function>.js
,使用 cjs 导出请求参数
- 默认使用
mock/<function>.private.js
或者mock/<function>.js
作为云函数的执行参数,若无对应文件则不使用参数执行云函数 - 推荐使用
mock/<function>.private.js
,使用优先级会高于mock/<function>.js
,并且不会上传到 repo - 支持 Object 和 Array 两种类型的 mock,当 mock 数据类型为 Array 时,将批量执行云函数
举个🌰:
bash
.
├── mock
│ ├── hello_world.js
│ └── hello_world.private.js
├── src
│ ├── function
│ │ └── hello_world.js
js
import {createFaaS, defineProps} from '@ifanrx/faas'
import {number, string} from 'yup'
export default createFaaS(() => {
const props = defineProps({
name: string().required(),
age: number(),
})
console.log(props)
return 'success'
})
js
// 单次调用云函数
export default {
name: 'John Deng',
age: 18,
}
// 批量调用云函数
export default [
{
name: 'John Deng',
age: 18,
},
{
name: 'Zhang Wei',
age: 20,
},
]
使用 mock event
debug-faas 支持在 mock 文件内自定义 faas event,通常可用于修改调用用户信息或者 event type
在 mock data 内插入 _event
字段即可,插入的 fakeEvent 会与原本的 faas event 合并,作为最终执行云函数 faas event
js
export default {
name: 'Peter',
honorific: 'Hello',
age: 24,
_event: {
eventType: 'open_api',
request: {
user: {
id: 123456,
},
}
},
}
// mock event 在修改 user 时,支持省略 request 字段,上面写法等价于:
export default {
name: 'Peter',
honorific: 'Hello',
age: 24,
_event: {
eventType: 'open_api',
user: {
id: 123456,
},
},
}
云函数执行日志查看
调试云函数时,可通过终端查看云函数执行日志,同时会自动将日志保存到根目录 .faas
下,可通过 debug_<function>-<timestamp>.log
找到该日志文件