Skip to content

使用代码节点#

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

在 n8n 中编码

此页面提供了代码节点的使用信息。有关在 n8n 中编码的更多指导,请参阅代码部分。它包括:

示例和模板

有关使用示例和模板以帮助您入门,请参阅 n8n 的代码集成页面。

Function 和 Function Item 节点

代码节点从版本 0.198.0 开始替代了 Function 和 Function Item 节点。如果您使用的是旧版本的 n8n,您仍然可以查看 Function 节点文档Function Item 节点文档

用法#

如何使用代码节点。

选择模式#

有两种模式:

  • 为所有项目运行一次:这是默认模式。当您的工作流运行时,代码节点中的代码执行一次,无论有多少输入项目。
  • 为每个项目运行一次:如果您希望代码为每个输入项目运行,请选择此选项。

JavaScript#

代码节点支持 Node.js。

支持的 JavaScript 功能#

代码节点支持:

  • Promise。您可以返回一个相应解析的 promise,而不是直接返回项目。
  • 使用 console.log 写入浏览器控制台。这对于调试和排除工作流故障很有用。

外部库#

如果您自托管 n8n,您可以在代码节点中导入和使用内置和外部 npm 模块。要了解如何启用外部模块,请参阅在代码节点中启用模块指南。

如果您使用 n8n Cloud,您无法导入外部 npm 模块。n8n 为您提供了两个模块:

内置方法和变量#

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

使用内置方法和变量的语法是 $variableName$methodName()。在代码节点或表达式编辑器中键入 $ 以查看建议的方法和变量列表。

键盘快捷键#

代码节点编辑环境支持一系列操作的省时且有用的键盘快捷键,从自动完成到代码折叠和使用多光标。查看完整的键盘快捷键列表。

Python (Pyodide - legacy) Python(Pyodide 旧版)#

Pyodide 是一个遗留功能。n8n v2 不再支持此功能。

n8n 在版本 1.0 中添加了 Python 支持。它不包含 Python 可执行文件。相反,n8n 使用 Pyodide 提供 Python 支持,这是 CPython 到 WebAssembly 的移植。这将可用的 Python 包限制为 Pyodide 包含的包。n8n 在您首次使用时自动下载包。

比 JavaScript 慢

代码节点处理 Python 比处理 JavaScript 花费更长时间。这是由于额外的编译步骤。

内置方法和变量#

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

使用内置方法和变量的语法是 _variableName_methodName()。在代码节点中键入 _ 以查看建议的方法和变量列表。

键盘快捷键#

代码节点编辑环境支持一系列操作的省时且有用的键盘快捷键,从自动完成到代码折叠和使用多光标。查看完整的键盘快捷键列表。

文件系统和 HTTP 请求#

您无法访问文件系统或发出 HTTP 请求。请使用以下节点代替:

Python (Native) Python(原生)#

n8n 在版本 1.111.0 中通过任务运行器添加了原生 Python 支持。此功能在 n8n v2 中已稳定。

与 Pyodide 的主要区别:

  • 原生 Python 仅在 all-items 模式中支持 _items,在 per-item 模式中支持 _item。它不支持其他 n8n 内置方法和变量。
  • n8nio/runners 镜像包含并显式允许列表时,原生 Python 支持从标准库和第三方导入原生 Python 模块。详情请参阅为任务运行器添加额外依赖
  • 原生 Python 默认禁止不安全的内置功能。详情请参阅任务运行器环境变量
  • Pyodide 支持点访问表示法,例如 item.json.myNewField。原生 Python 仅支持方括号访问表示法,例如 item["json"]["my_new_field"]。在其他语法上也可能存在细微差异。
  • 在 n8n Cloud 中,Code 节点的 Python 选项不允许导入任何第三方 Python 库。自托管用户可以在此处查看添加外部库的设置说明。长期来看,n8n 团队将通过任务运行器支持用户以安全方式执行包含第一方和第三方库的任意 Python 代码。

升级到原生 Python 是一个重大变更,因此你可能需要调整 Python 脚本以使用原生 Python 运行器。

Coding in n8n 在 n8n 中编码#

在 n8n 中可以使用代码的地方有两个:代码节点和表达式编辑器。使用任一区域时,你需要了解一些关键概念,以及一些内置方法和变量来帮助完成常见任务。

Key concepts 关键概念#

使用代码节点时,你需要了解以下概念:

  • 数据结构:了解你在代码节点中接收的数据,以及从节点输出数据的要求。
  • 项目链接:了解数据项目的工作原理,以及如何链接到先前节点的项目。当输入和输出项目的数量不匹配时,你需要在代码中处理项目链接。

Built-in methods and variables 内置方法和变量#

n8n 包含内置方法和变量。这些提供对以下内容的支持:

  • 访问特定项目数据
  • 访问有关工作流、执行和 n8n 环境的数据
  • 便利变量以帮助处理数据和时间

有关更多信息,请参阅内置方法和变量

在代码节点中使用 AI#

功能可用性

代码节点中的 AI 辅助功能仅对云服务用户可用。自托管的 n8n 中不提供此功能。

AI 生成的代码会覆盖您的代码

如果您已在代码选项卡中编写了一些代码,AI 生成的代码将替换它。n8n 建议使用 AI 作为创建初始代码的起点,然后根据需要进行编辑。

在代码节点中使用 ChatGPT 生成代码:

  1. 在代码节点中,将语言设置为 JavaScript
  2. 选择 Ask AI 选项卡。
  3. 编写您的查询。
  4. 选择生成代码。n8n 将您的查询发送给 ChatGPT,然后在代码选项卡中显示结果。