# 代码节点
代码节点支持通过编写代码来生成返回值。扣子编程支持在代码节点内使用 IDE 工具,编写自定义代码逻辑,来处理输入参数并返回响应结果。
扣子编程于2025年9月16日对**工作流的代码节点服务**进行了升级,发布前请**试运行**进行验证。
## 配置代码节点
### 基础配置
代码节点的配置参数说明如下:
| **配置** | **说明** |
| --- | --- |
| **输入** | 声明代码中需要使用的变量。添加输入参数时需要设置参数名和变量值,其中变量值支持设置为固定值或引用上游节点的输出参数。
在代码中引用输入参数时,直接通过 params['input'] 取值即可。
|
| **代码**: | 代码节点中需要执行的代码片段,你可以直接编写。
* 引用变量:直接使用输入参数中的变量,通过**`return`**一个对象来输出处理结果。
* 函数限制:不支持编写多个函数。即使仅有一个输出值,也务必保持以对象的形式返回。
支持 JavaScript 和 Python 两种语言。详细说明可参考[开发语言](https://docs.coze.cn/api/open/docs/guides/code_node#79fb9b0d)。 |
| **输出** | 代码运行成功后,输出的参数。你可以根据实际需求,在输出结构中只保留必要的参数。
当节点的异常处理方式设置为返回设定内容或执行异常流程时,同时返回 `isSuccess`、`errorBody` 参数,用于在节点执行异常时传递详细信息。
确保此处定义的参数名、类型与代码的 **return** 对象完全一致。以代码节点默认提供的代码为例,输出的参数与代码中定义的 **return** 对象完全一致。
|
* 节点执行超时:单请求限制 60s。
* 暂不支持 HTTP/HTTPS 以外的其他协议。
* 每个低代码工作流中最多添加 50 个代码节点。
### 异常设置
默认情况下,节点运行超时、运行异常时,工作流会中断,工作流调试界面或 API 中会返回错误信息。你也可以手动设置节点运行超时等异常情况下的处理方式,例如超时时间、是否重试、是否跳转异常分支等。
| **异常处理设置** | **说明** |
| --- | --- |
| 超时时间 | 超时时间指节点运行的最大耗时,如果超过此时长,则判断为节点运行超时。
默认情况下,节点的超时时间默认为 60s,即 1 分钟。你也可以将其改为 0.1s~60s,灵活控制超时时间。 |
| 重试次数 | 节点运行超时或异常时,默认不重试,你也可以设置为重试 1 次。 |
| 异常处理方式 | 节点运行超时或异常时,默认中断工作流。你也可以手动修改此节点的异常处理方式:
* **中断流程**:工作流执行中断,不再运行后续节点。
* **返回设定内容**:发生异常后,工作流运行不会中断。开发者可自定义设置需要返回的输出字段内容,必须是输出中已定义的字段,且格式为合法的 JSON 格式。另外,节点还会返回输出参数 `isSuccess`、`errorBody`,传递节点异常的详细信息。
* **执行异常流程**:发生异常后,工作流运行不会中断,转而执行异常流程分析,开发者需要为新增的异常分支配置处理流程。异常信息会通过节点的输出参数 `isSuccess`、`errorBody` 返回。 |

## 示例
## 开发语言
代码节点支持 JavaScript 和 Python 两种语言。
### JavaScript
支持 V8 引擎的 11.3.244.8 版本(对应 Node.js 20.3.1 版本),并兼容 ECMAScript 2022 语法。
代码 IDE 支持 TypeScript,提供静态语言的编码体验。
在 JavaScript 中,仅内置了两个三方依赖库:
* `dayjs`(版本 1.8.36)
* `lodash`(版本 4.17.20) 。
JavaScript 运行时遵循 [WinterCG](https://wintercg.org/) 规范,并支持一系列 Web API,包括:
* `atob()`、`btoa()`、`console`、`setTimeout()`、`clearTimeout()`、`structuredClone()`、`URL`、`URLSearchParams`、`AbortController`、`AbortSignal`、`TextEncoder`、`TextDecoder`
* `WebStreams`
* `WebCrypto(算法仅支持 AES、HMAC、SHA)`
JavaScript 的三方依赖库示例代码如下:
```JavaScript
//only dayjs and lodash are allowed
import dayjs from 'dayjs';
import _ from 'lodash';
async function main({ params }: Args): Promise