---
tags: cli, functions, feature
author: Oliver.W
---
> ticket: https://app.asana.com/0/1200011502754281/1200276428733645/f
# Serverless Tencent Local Dev Feature
## Problem to Solve:
* Dev mode need time do deploy.
* Dev mode is not stable and not find the reason yet. (Caused by SCF socket side issue.)
* The event object for SCF is difficult to create and reproduct in local env.
* User need support on function development local test & debug.
### Things need to consider
* Until release invoke and fix Dev Mode user has no way to do debug easily.
* Framework components (next.js, express, etc) are support local debug mode by framework.
* Based on usage analytics, the Node.js take over 85% of the function development cases.
* The local dev feature used only for users' function method, no need to support infrastructure like, API Gateway, Database, and etc.
## Key Result:
* User can do local debug with functional development in local (without deploy)
* User can easy generate event object and interact wtih function method locally.
## Proposed Solution:
Add `invoke local` for SCF components only. function developer should be able to use only with SCF components and show the help info under SCF components folder.
```
invoke local .................. 调用本地函数
--function / -f ....................函数名称(如果使用SCF组件可以不指定函数名称)
--data / -d ........................要传递给调用函数的序列化Event数据(String)
--path / -p ........................要传递给调用函数Event的 json 文件所在路径
--context ..........................要传递给调用函数的序列化Context数据(String)
--contextPath / -x .................要传递给调用函数Context的 json 文件所在路径
--env / -e .........................覆盖环境变量信息. e.g. --env VAR1=val1 --env VAR2=val2
--config / -c ......................Path to serverless config file
```
### User Experience
* User can find out event and context examples from help doc and Tencent Cloud help doc.
* User will get notification to check help doc when use the invoke local function.
* User will use invoke local function to do local dev and debug.
* User can pass customized event and context object in string or json file.
* After execute funciton the result should be log into console in JSON that formatted and colorized.
* https://www.npmjs.com/package/jsome consider lib like this to make the result pretty.
* For http res example
```sh
# 确保本地handler执行完显示的返回结果 与在scf中执行完反的数据信息一致。 (没有信息隐藏或默认不可见)
{
"message": "Go Serverless v1.0! Your function executed successfully!"
"code": 2021
"nestOjb": {
"string": "string"
}
}
```
## Usage
### Invoke Local Funciton
```sh
--- 无法找到指定函数
Serverless: (黄色)调用的函数 {functionName} 不存在,请检查后重试。(/黄色)
--- Invoke非Component项目
Serverless: (黄色)当前命令只支持 SCF 组件,请在 SCF 组件目录内使用。(/黄色)
--- yml中没有handler字段(SCF Component)
Serverless: (黄色)调用函数未指定,请检查 serverless.yml 中的hanlder配置后重试。(/黄色)
--- 同时传递了 data 和 path
Serverless: (黄色)不能同时指定 data 与 path ,请检查后重试。(/黄色)
--- 同时传递了 context 和 contextPath
Serverless: (黄色)不能同时指定 context 与 contextPath ,请检查后重试。(/黄色)
--- 传递了无效的event参数
Serverless: (黄色)事件(event)参数数据格式错误,请检查后重试。(/黄色)
--- 传递了无效的context参数
Serverless: (黄色)上下文(context)参数数据格式错误,请检查后重试。(/黄色)
--- 传递了无效的path
Serverless: (黄色)找不到指定的路径文件 {Path},请检查后重试。(/黄色)
--- Node的major.minor版本不匹配,(只忽略patch版本)
当前系统Node版本为 xxx, 项目指定的版本为 xxx, 建议使用相同版本进行测试。
--- yml 中的runtime不是nodejs
Serverless: (黄色)当前命令只支持 Node.js 运行时,其他运行时暂不支持。(/黄色)
--- 调用成功(json对象形式)
... (绿色)调用成功(/绿色)
--- 调用错误 json对象形式)
... (红色)调用错误(/红色)
--- Invoke 功能错误
(红色)Serverless > 命令执行错误: {msg} (/红色)
帮助文档:xxx
```
## Launch Plan
### Phase 1
* Enable Node.js function local dev feature.
* Check node.js runtime before envoke local. (Error)
* Major version should be same with the runtime defined in config. (Warning)
### Phase 2
* Enable Python and other function local dev feature with docker.
### Phase 3
* TBC
---
## Logic Path
## Usage:
### Invoke Local Function
```
TBC
```