跳转到内容

代码动作

当图不够用时,Code 节点可以执行一段脚本。

共有七种语言可用,全部运行在内置的 WebAssembly 沙箱中:您的机器上无需安装任何解释器, 脚本也无法访问您的文件系统。

语言引擎
TypeScriptQuickJS(类型在编译时被剥除)
JavaScriptQuickJS
PythonPyodide(编译为 WebAssembly 的 CPython)
Lua编译为 WebAssembly 的 Lua 5.4
Ruby编译为 WebAssembly 的 CRuby
RWebR
C#带 Roslyn 的 WebAssembly 版 .NET

默认语言是 TypeScript

无论使用哪种语言,该节点暴露的东西都一样:

输入value(名为 input)、code(字符串)
输出result
配置languagecodetimeoutpackages
  • input —— 从输入端口收到的值。
  • vars —— 运行变量
  • 语言的标准输出console.logprintputscatConsole.WriteLine)会写入执行日志
  • 返回的值会从 result 端口发出。错误或超时则从 error 发出。

timeout,单位为秒:默认 5 秒最大 60 秒。超时的脚本会被中断, 执行会转到 error 端口。

packages 字段接受一组 { name, version }。确切的版本号会作为缓存键:依赖会在首次执行时 被解析并缓存,随后每次执行都以离线方式挂载 —— 在 CI 中也是如此。

语言来源
TypeScript / JavaScriptnpm(整体打包)
Python来自 PyPI 的纯 Python wheel 包
LuaLuaRocks(纯 Lua 源码)
Ruby纯 Ruby gem
RCRAN,经由 WebR 的 WebAssembly 仓库
C#无 —— 仅 .NET 标准库

很多需求已经有对应的节点覆盖,而且更易读、更快:

需求节点
从响应中提取一个值一个连线选择器
格式化一个字符串转换
过滤、排序、聚合一个列表列表
哈希、编码、签名编码
校验一个结构校验模式

请把 Code 节点留给真正特有的逻辑。