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

代码节点常见问题#

以下是代码节点的常见错误和问题及其解决方法或排查步骤。

代码未正确返回数据项#

当代码节点中的代码未按预期格式返回数据时会出现此错误。

在 n8n 中,所有在节点间传递的数据都是对象数组。每个对象都包含一个带有 json 键的嵌套对象:

1
2
3
4
5
6
7

| ``` [ { "json":{ // 你的数据放在这里 } } ]


---|---

排查此错误时,请检查以下事项:
* 阅读数据结构文档以了解代码节点接收的数据格式和输出数据的要求
* 通过数据项链接文档理解数据项的工作机制以及如何连接上游节点的数据项

## 'json' 属性不是对象类型#
当代码节点返回的数据中 `json` 键指向的不是对象时会出现此错误。

如果将 `json` 设置为其他数据结构(例如数组)则可能引发此错误:

1 2 3 4 5 6 7

| ```
[
{
"json":[
// 将 `json` 设置为数组会导致错误
]
}
]

---|---

解决方法:确保返回数据中 json 键引用的是对象:

1
2
3
4
5
6
7

| ```[ { "json":{ // 按预期将json 设置为对象 } } ]


---|---

## 代码未返回对象#
当代码节点未返回任何数据或返回意外结果时可能出现此错误。

解决方法:确保代码节点返回预期的数据结构:

1 2 3 4 5 6 7

| ```
[
{
"json":{
// 你的数据放在这里
}
}
]

---|--- 如果您提供的代码返回了 'undefined' 而非预期结果,也可能出现此错误。这种情况下,请确保您在代码节点中引用的数据在每次执行时都存在,并且其结构符合代码预期。

import 和 export 仅允许出现在顶层#

当您尝试在代码节点中使用 importexport 时会出现此错误。n8n 的 JavaScript 沙箱不支持这些语法。请改用 require 函数加载模块。 要解决此问题,请尝试将 import 语句改为使用 require

1
2
3
4

| ``` // 原始代码: // import express from "express"; // 修改后代码: const express = require("express");


---|---
## 找不到模块 '<module>'#
当您在代码节点中使用 `require` 但 n8n 找不到对应模块时会出现此错误。

仅限自托管版本
n8n 的云端版本不支持导入模块。

如果您正在自托管 n8n,请按以下步骤操作:
  * 将模块安装到您的 n8n 环境中:
    * 如果使用 npm 运行 n8n,请在 n8n 的同一环境中安装模块
    * 如果使用 Docker 运行 n8n,需要通过自定义镜像扩展官方 n8n 镜像以包含所需模块
  * 设置 `NODE_FUNCTION_ALLOW_BUILTIN` 和 `NODE_FUNCTION_ALLOW_EXTERNAL` 环境变量以允许导入模块

## 使用全局变量#
有时您可能希望在跨执行流程和执行流程内部设置和检索与工作流相关的简单全局数据。例如,在编译包含项目更新列表的报告时,您可能希望包含先前报告的日期。

要直接在工作流中设置、更新和检索数据,请在代码中使用静态数据函数。您可以全局管理数据,也可以将数据绑定到特定节点。

### 尽可能使用去重功能
如果您希望通过使用变量来避免重复处理相同的数据项,请考虑改用去重节点。去重节点能够在多次执行间保存信息,从而避免重复处理相同条目。

---