Skip to content

Code 节点常见问题#

以下是 Code 节点常见的错误和问题以及解决方法。

代码未正确返回数据项#

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

在 n8n 中,所有节点间传递的数据都是对象数组。每个对象都通过 json 键包装另一个对象:

1
2
3
4
5
6
7
[
  {
    "json": {
	  // 你的数据放在这里
	}
  }
]

排查此错误时请检查以下内容:

  • 阅读数据结构文档,了解 Code 节点接收的数据格式以及节点输出数据的要求。
  • 理解数据项的工作原理以及如何通过数据项链接连接来自前驱节点的数据项。

'json' 属性不是对象类型#

当 Code 节点返回的数据中 json 键指向的不是对象时会出现此错误。

如果将 json 设置为其他数据结构(如数组)可能会导致此问题:

1
2
3
4
5
6
7
[
  {
    "json": [
	  // 像这样将 `json` 设置为数组会导致错误
	]
  }
]

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

1
2
3
4
5
6
7
[
  {
    "json": {
	  // 按预期将 `json` 设置为对象
	}
  }
]

代码未返回对象#

当您的 Code 节点未返回任何内容或返回了意外结果时,可能会出现此错误。

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

1
2
3
4
5
6
7
[
  {
    "json": {
	  // 您的数据放在这里
	}
  }
]

如果您提供的代码返回的是 'undefined' 而非预期结果,也可能出现此错误。在这种情况下,请确保您在 Code 节点中引用的数据存在于每次执行中,并且具有您的代码所预期的结构。

'import' 和 'export' 只能出现在顶层#

如果您尝试在 Code 节点中使用 importexport,会出现此错误。n8n 的 JavaScript 沙箱不支持这些语法。请改用 require 函数来加载模块。

解决方法:将您的 import 语句改为使用 require

1
2
3
4
// 原始代码:
// import express from "express";
// 修改后代码:
const express = require("express");

找不到模块 '<模块名>'#

当您在 Code 节点中使用 require 但 n8n 找不到该模块时,会出现此错误。

仅适用于自托管版本

n8n 的云版本不支持导入模块。

如果您是自托管 n8n,请按照以下步骤操作:

  • 将模块安装到您的 n8n 环境中:
    • 如果您使用 npm 运行 n8n,请在 n8n 的相同环境中安装模块
    • 如果您使用 Docker 运行 n8n,您需要通过自定义镜像扩展官方 n8n 镜像以包含您的模块
  • 设置 NODE_FUNCTION_ALLOW_BUILTINNODE_FUNCTION_ALLOW_EXTERNAL 环境变量以允许导入模块

使用全局变量#

有时您可能希望在跨执行和工作流内部设置和获取与工作流相关的简单全局数据。例如,在编译包含项目更新列表的报告时,您可能希望包含上一份报告的日期。

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

尽可能使用"去重节点"

如果您想使用变量来避免多次处理相同的数据项,请考虑改用去重节点。去重节点可以保存跨执行的信息,避免多次处理相同的项目。