N8N中文教程
集成节点/Built in_nodes/Core_nodes/Code

代码节点#

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

在 n8n 中编码 本页提供有关代码节点的使用信息。有关在 n8n 中编码的更多指导,请参阅代码部分,其中包含:

  • 内置方法和变量的参考文档
  • 处理日期和查询 JSON的指南
  • 代码示例集中不断增长的示例集合

示例和模板 有关入门的用法示例和模板,请参阅 n8n 的代码集成页面。

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

使用方法#

如何使用代码节点。

选择模式#

提供两种模式:

  • 对所有项运行一次:此为默认模式。工作流运行时,无论输入项数量多少,代码节点中的代码仅执行一次。
  • 对每个项运行一次:若需为每个输入项单独执行代码,请选择此模式。

JavaScript#

代码节点支持 Node.js。

支持的 JavaScript 功能#

代码节点支持:

  • Promise。您可以直接返回 Promise 而非直接返回数据项,该 Promise 会相应解析。
  • 使用 console.log 写入浏览器控制台。这对调试和排查工作流问题非常有用。

外部库#

如果您自行托管 n8n,可以在代码节点中导入并使用内置及外部的 npm 模块。要了解如何启用外部模块,请参阅在代码节点中启用模块指南。 如果您使用 n8n Cloud,则无法导入外部 npm 模块。n8n 为您提供了两个可用模块:

  • crypto Node.js 模块
  • moment npm 包

内置方法和变量#

n8n 提供了用于处理数据和访问 n8n 数据的内置方法和变量。更多信息请参阅内置方法和变量文档。 使用内置方法和变量的语法是 $variableName$methodName()。在代码节点或表达式编辑器中输入 $ 即可查看建议方法和变量列表。

键盘快捷键#

代码节点编辑环境支持一系列省时实用的键盘快捷键,包括自动补全、代码折叠和多光标操作等功能。查看完整的键盘快捷键列表。

Python (Pyodide - 旧版)#

Pyodide 是旧版功能。n8n 的未来版本将不再支持此功能。 n8n 在 1.0 版本中增加了 Python 支持。它不包含 Python 可执行文件,而是通过 Pyodide(CPython 到 WebAssembly 的移植版本)提供 Python 支持。这限制了可用 Python 包的范围,仅限于 Pyodide 包含的包。首次使用时,n8n 会自动下载相关包。

运行速度低于 JavaScript 代码节点处理 Python 代码所需时间比 JavaScript 更长,这是由于额外的编译步骤导致的。

内置方法和变量#

n8n 提供了用于处理数据和访问 n8n 数据的内置方法和变量。更多信息请参阅内置方法和变量文档。 使用内置方法和变量的语法是 _variableName_methodName()。在代码节点中输入 _ 即可查看建议方法和变量列表。

键盘快捷键#

代码节点编辑环境支持一系列省时实用的键盘快捷键,包括自动补全、代码折叠和多光标操作等功能。查看完整的键盘快捷键列表。

文件系统和 HTTP 请求#

无法直接访问文件系统或发起 HTTP 请求。请改用以下节点:

  • 从磁盘读取/写入文件
  • HTTP 请求

Python(原生版本 - beta)#

n8n 在 1.111.0 版本中新增了使用任务运行器(beta)的原生 Python 支持。 与 Pyodide 的主要差异:

  • 原生 Python 仅支持全项目模式下的 _items 和逐项模式下的 _item,不支持其他 n8n 内置方法和变量
  • n8nio/runners 镜像包含并明确允许第三方库,原生 Python 支持从标准库和第三方库导入原生 Python 模块。详见为任务运行器添加额外依赖项
  • 原生 Python 默认禁用不安全的内置功能。详见任务运行器环境变量
  • Pyodide 支持点访问符号(如 item.json.myNewField),而原生 Python 仅支持括号访问符号(如 item["json"]["my_new_field"])。Pyodide 支持的某些语法结构在原生 Python 中可能不合法,还存在其他细微语法差异

请注意升级到原生 Python 属于破坏性变更,您可能需要调整 Python 脚本以适配原生 Python 运行器。 此功能目前处于测试阶段,后续可能发生变化。待功能稳定后,n8n 将在 2025 年逐步向 n8n 云用户推送。自托管用户可立即体验并提供反馈。

在 n8n 中编写代码#

在 n8n 中有两处可使用代码:代码节点和表达式编辑器。使用这两处功能时,您需要了解一些关键概念,以及用于辅助常见任务的内置方法和变量。

关键概念#

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

  • 数据结构:了解代码节点接收的数据格式及节点输出数据的要求
  • 数据项关联:掌握数据项的工作机制,以及如何关联先前节点的数据项。当输入与输出数据项数量不匹配时,需要在代码中处理数据项关联

内置方法和变量#

n8n 包含内置方法和变量,这些功能支持:

  • 访问特定项目数据
  • 获取工作流、执行记录和 n8n 环境相关数据
  • 提供处理数据和时间的便捷变量

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

在代码节点中使用 AI#

功能可用性说明: 代码节点的 AI 辅助功能仅向云用户开放,自托管版本的 n8n 不可用。

AI 生成代码会覆盖现有代码 如果您已在代码标签页中编写了代码,AI 生成的代码将会覆盖原有内容。n8n 建议将 AI 作为创建初始代码的起点,然后根据需要进行编辑。

通过 ChatGPT 在代码节点中生成代码的步骤:

  1. 在代码节点中将语言设置为 JavaScript
  2. 选择 Ask AI 标签页
  3. 输入您的查询需求
  4. 点击 Generate Code,n8n 会将查询发送至 ChatGPT,随后在代码标签页中显示生成结果

常见问题#

关于常见问题及其解决方案,请参阅常见问题。

文档互动反馈 本页面 !点赞 有帮助 !点踩 无帮助 感谢您的反馈! 提交 上一页 AI Transform 下一页 键盘快捷键 基于 Material for MkDocs Insiders 构建