Code 节点#
使用 Code 节点编写自定义 JavaScript 或 Python 代码,并将其作为工作流中的一个步骤运行。
在 n8n 中编码
本页面提供了关于 Code 节点的使用信息。有关在 n8n 中编码的更多指导,请参阅 Code 部分。它包括:
示例和模板
有关使用示例和模板以帮助你入门,请参阅 n8n 的 Code 集成页面。
Function 和 Function Item 节点
从版本 0.198.0 开始,Code 节点取代了 Function 和 Function Item 节点。如果你使用的是旧版本的 n8n,仍然可以查看 Function 节点文档和 Function Item 节点文档。
用法#
如何使用 Code 节点。
选择模式#
有两种模式:
- 为所有项目运行一次:这是默认模式。当工作流运行时,代码节点中的代码只执行一次,无论有多少输入项目。
- 为每个项目运行一次:如果你希望代码为每个输入项目运行,请选择此模式。
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 将不再支持此功能。
n8n 在版本 1.0 中添加了 Python 支持。它不包含 Python 可执行文件。相反,n8n 使用 Pyodide 提供 Python 支持,这是 CPython 到 WebAssembly 的移植版本。这将可用的 Python 包限制为 Pyodide 包含的包。n8n 会在你第一次使用时自动下载该包。
比 JavaScript 慢
Code 节点处理 Python 比处理 JavaScript 需要更长的时间。这是由于额外的编译步骤。
内置方法和变量#
n8n 提供了用于处理数据和访问 n8n 数据的内置方法和变量。有关更多信息,请参阅内置方法和变量。
使用内置方法和变量的语法是 _variableName 或 _methodName()。在 Code 节点中输入 _ 可查看建议的方法和变量列表。
键盘快捷键#
Code 节点编辑环境支持省时且有用的键盘快捷键,用于从自动完成到代码折叠和使用多光标等一系列操作。查看完整的键盘快捷键列表。
文件系统和 HTTP 请求#
你无法访问文件系统或发起 HTTP 请求。请改用以下节点:
Python (原生 - 测试版)#
n8n 在版本 1.111.0 中使用任务运行器(测试版)添加了原生 Python 支持。
与 Pyodide 的主要区别:
- 原生 Python 仅支持所有项目模式下的
_items和每个项目模式下的_item。它不支持其他 n8n 内置方法和变量。 - 原生 Python 支持从标准库和第三方导入原生 Python 模块,前提是
n8nio/runners镜像包含它们并明确将它们加入白名单。有关更多详细信息,请参阅为任务运行器添加额外依赖。 - 原生 Python 默认拒绝不安全的内置函数。有关更多详细信息,请参阅任务运行器环境变量。
- 与接受点访问表示法(例如
item.json.myNewField)的 Pyodide 不同,原生 Python 仅接受括号访问表示法(例如item["json"]["my_new_field"])。在 Pyodide 接受但在原生 Python 中不合法的构造方面,可能还有其他细微的语法差异。
请记住,升级到原生 Python 是一个破坏性更改,因此你可能需要调整 Python 脚本以使用原生 Python 运行器。
此功能处于测试阶段,可能会发生变化。随着它变得稳定,n8n 将在 2025 年逐步向 n8n Cloud 用户推出。自托管用户可以试用并提供反馈。
在 n8n 中编码#
在 n8n 中有两个地方可以使用代码:Code 节点和表达式编辑器。使用任一区域时,你需要了解一些关键概念,以及一些内置方法和变量来帮助完成常见任务。
关键概念#
使用 Code 节点时,你需要理解以下概念:
- 数据结构:了解你在 Code 节点中接收的数据,以及从节点输出数据的要求。
- 项目链接:了解数据项目的工作原理,以及如何链接到前一个节点的项目。当输入和输出项目的数量不匹配时,你需要在代码中处理项目链接。
内置方法和变量#
n8n 包含内置方法和变量。这些提供以下支持:
- 访问特定项目数据
- 访问有关工作流、执行和 n8n 环境的数据
- 帮助处理数据和时间的便捷变量
有关更多信息,请参阅内置方法和变量。
在 Code 节点中使用 AI#
功能可用性
Code 节点中的 AI 辅助功能可供 Cloud 用户使用。自托管 n8n 中不可用。
AI 生成的代码会覆盖你的代码
如果你已经在 Code 选项卡上编写了一些代码,AI 生成的代码将替换它。n8n 建议使用 AI 作为起点来创建初始代码,然后根据需要进行编辑。
要使用 ChatGPT 在 Code 节点中生成代码:
- 在 Code 节点中,将 Language 设置为 JavaScript。
- 选择 Ask AI 选项卡。
- 编写你的查询。
- 选择 Generate Code。n8n 将你的查询发送到 ChatGPT,然后在 Code 选项卡中显示结果。
常见问题#
有关常见问题或疑问以及建议的解决方案,请参阅常见问题。