使用代码节点#
使用代码节点编写自定义 JavaScript 或 Python,并将其作为工作流中的一个步骤运行。
在 n8n 中编码
此页面提供了代码节点的使用信息。有关在 n8n 中编码的更多指导,请参阅代码部分。它包括:
- Reference documentation on Built-in methods and variables
- Guidance on Handling dates and Querying JSON
- A growing collection of examples in the Cookbook
示例和模板
有关使用示例和模板以帮助您入门,请参阅 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 的主要区别:
- Native Python supports only
_itemsin all-items mode and_itemin per-item mode. It doesn't support other n8n built-in methods and variables. - On self-hosted, native Python supports importing native Python modules from the standard library and from third-parties, if the
n8nio/runnersimage includes them and explicitly allowlists them. See adding extra dependencies for task runners for more details. - Native Python denies insecure built-ins by default. See task runners environment variables for more details.
- Unlike Pyodide, which accepts dot access notation, for example,
item.json.myNewField, native Python only accepts bracket access notation, for example,item["json"]["my_new_field"]. There may be other minor syntax differences where Pyodide accepts constructs that aren't legal in native Python. - On n8n cloud, the Python option for the Code node doesn't allow users to import any Python libraries — whether from the standard library or third-party packages. Self-hosting users can find setup instructions to include external libraries here. In the long term, the n8n team is committed to allowing users to securely execute arbitrary Python code with any first- and third-party libraries using task runners.
升级到原生 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 生成代码:
- 在代码节点中,将语言设置为 JavaScript。
- 选择 Ask AI 选项卡。
- 编写您的查询。
- 选择生成代码。n8n 将您的查询发送给 ChatGPT,然后在代码选项卡中显示结果。