JavaScript 脚本
在隔离环境中用 JavaScript 模块处理输入,并明确声明输出。
JavaScript 脚本节点(接口类型为 code)适合数据转换、计算,以及组合受支持的能力调用。如果只需要发起一个 HTTP 请求,不涉及数据转换,HTTP 请求节点通常配置更少。
模块与端口
代码是一个 ES 模块,默认导出函数接收 (inputs, context),返回业务输出或解析为业务输出的 Promise。
export default ({ name, prefix }) => ({
message: `${prefix}, ${name}!`
});
通过 config.outputs 声明自定义输出 schema。具名输入可直接绑定,也可以在 config.inputs 中添加约束。模块 ID 和运行时组装由公开接口负责。
{
"op": "node.add", "as": "greet", "type": "code", "name": "Compose greeting",
"code": "export default ({name, prefix}) => ({message: `${prefix}, ${name}!`});",
"config": { "outputs": { "message": { "schema": { "type": "string" }, "nullable": false } } },
"inputs": {
"name": { "kind": "value", "value": "Ada" },
"prefix": { "kind": "value", "value": "Hello" }
}
}


- 输入
- {"name":"Ada"}
- 预期结果
- {"message":"Hello, Ada!"}
- 运行前准备
- 导入或执行此案例需要 Open Flow 服务;预览本身可离线使用。
运行时限制
受支持的 Node 内置模块只是兼容子集。每次任务都会获得从 /tmp 开始的全新内存文件系统,既不能访问宿主机磁盘,也不会延续到下次调用。不支持任意安装的包、动态导入和 CommonJS require。
调用应用操作、工作流或 HTTP 主机时,需要明确声明代码能力。context.fetch 受已声明主机和部署端当前引擎契约限制,不会继承平台凭据,也不提供任意网络访问。
持久化结果与失败
业务输出应返回 JSON。运行所属的二进制内容使用受支持的 Artifact 接口,跨运行业务值则明确写入工作流状态。虚拟文件和本地全局变量都不能作为持久化存储。
代码节点支持任务重试和错误处理。重试会重新执行整个模块,可能重复外部操作。资源限制、取消和结果不确定等情况仍按运行时契约处理。