跳到主要内容

使用 Code 节点

使用 Code 节点编写自定义 JavaScript 或 Python,并将其作为工作流中的一个步骤运行。

信息

在 n8n 中编写代码

本页介绍 Code 节点的使用方法。更多编程指导请参阅代码章节,其中包括:

信息

示例和模板

入门示例和模板,请参阅 n8n 的 Code 集成页面。

信息

Function 和 Function Item 节点

从 n8n 0.198.0 起,Code 节点替代 Function 和 Function Item 节点。使用更早版本时,仍可查看 Function 节点文档和 Function Item 节点文档。

使用方式 ​

如何使用 Code 节点。

选择模式 ​

有两种模式:

  • Run Once for All Items(为所有数据项运行一次):默认模式。工作流运行时,无论输入多少个数据项,Code 节点中的代码都只执行一次。
  • Run Once for Each Item(为每个数据项运行一次):希望代码针对每个输入数据项分别运行时,选择此模式。

JavaScript ​

Code 节点支持 Node.js。

支持的 JavaScript 功能 ​

Code 节点支持:

  • Promise。可以返回会解析为相应结果的 Promise,而不是直接返回数据项。
  • 使用 console.log 向浏览器控制台写入信息,便于调试和排查工作流。

外部库 ​

自托管 n8n 时,可以在 Code 节点中导入并使用内置和外部 npm 模块。启用外部模块的方法,请参阅在 Code 节点中启用模块。

使用 n8n Cloud 时,不能导入外部 npm 模块。n8n 提供两个可用模块:

内置方法和变量 ​

n8n 提供内置方法和变量,用于处理数据和访问 n8n 数据。更多信息请参阅内置方法和变量。

使用内置方法和变量的语法是 $variableName 或 $methodName()。在 Code 节点或表达式编辑器中输入 $,即可查看建议方法和变量列表。

键盘快捷键 ​

Code 节点编辑环境提供多种实用快捷键,可用于自动补全、代码折叠、多光标等操作。完整列表见键盘快捷键。

Python(Pyodide,旧版) ​

注意

功能可用范围

Pyodide 已从 n8n 2.0 中移除,n8n 不再支持此功能。

n8n 在 1.0 中加入 Python 支持,但不包含 Python 可执行程序,而是通过 Pyodide(CPython 的 WebAssembly 移植版)提供支持。因此,可用包仅限 Pyodide 包含的包。首次使用时,n8n 会自动下载对应包。

信息

比 JavaScript 慢

由于需要额外编译步骤,Code 节点处理 Python 比处理 JavaScript 耗时更长。

内置方法和变量 ​

n8n 提供内置方法和变量,用于处理数据和访问 n8n 数据。更多信息请参阅内置方法和变量。

使用内置方法和变量的语法是 _variableName 或 _methodName()。在 Code 节点中输入 _,即可查看建议方法和变量列表。

键盘快捷键 ​

Code 节点编辑环境提供多种实用快捷键,可用于自动补全、代码折叠、多光标等操作。完整列表见键盘快捷键。

文件系统与 HTTP 请求 ​

不能访问文件系统或发出 HTTP 请求,请改用以下节点:

Python(原生) ​

信息

功能可用范围

使用任务运行器的原生 Python 支持从 n8n 1.111.0 起可用,在 n8n 2 中已稳定。

与 Pyodide 的主要区别:

  • 原生 Python 在处理所有数据项的模式下仅支持 _items,逐项模式下仅支持 _item,不支持其他 n8n 内置方法和变量。
  • 自托管环境中,如果 n8nio/runners 镜像包含相应模块,且已显式加入允许列表,原生 Python 可以导入标准库和第三方原生模块。详情请参阅为任务运行器添加额外依赖。
  • 原生 Python 默认禁止不安全的内置功能。详情请参阅任务运行器环境变量。
  • Pyodide 接受点访问语法,例如 item.json.myNewField;原生 Python 则只接受方括号访问语法,例如 item["json"]["my_new_field"]。还可能有其他细微差异:Pyodide 接受的某些写法,在原生 Python 中并不合法。
  • 在 n8n Cloud 上,Code 节点的 Python 选项不允许导入任何 Python 库,包括标准库和第三方包。自托管环境如何包含外部库,请参阅为任务运行器添加额外依赖。长期而言,n8n 团队致力于通过任务运行器,让用户安全执行使用任意标准库和第三方库的 Python 代码。

升级为原生 Python 属于破坏性变更,可能需要调整脚本,才能使用原生 Python 运行器。

在 n8n 中编写代码 ​

n8n 中有两处可以使用代码:Code 节点和表达式编辑器。使用任一方式时,都需要了解一些关键概念;也有内置方法和变量可以辅助完成常见任务。

关键概念 ​

使用 Code 节点时,需要了解以下概念:

  • 数据结构:了解 Code 节点收到的数据,以及输出数据必须满足的要求。
  • 数据项关联:了解数据项如何工作,以及如何关联到前面节点的数据项。输入和输出数据项数量不同时,需要在代码中处理数据项关联。

内置方法和变量 ​

n8n 内置方法和变量可以帮助你:

  • 访问特定数据项的数据
  • 访问工作流、执行和 n8n 环境的信息
  • 使用辅助变量处理数据和时间

更多信息请参阅内置方法和变量。

在 Code 节点中使用 AI ​

相关资源 ​

本文为社区中文翻译。查看对应英文原文