Skip to content

代码节点常见问题

以下是代码节点的一些常见错误和问题以及解决或排除故障的步骤。

代码无法正确返回项目

当代码节点中的代码未以预期格式返回数据时,就会发生此错误。

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

1
2
3
4
5
6
7
[
  {
    "json": {
	  // your data goes here
	}
  }
]

要解决此错误,请检查以下内容:

  • 阅读数据结构以了解您在代码节点中接收的数据以及从节点输出数据的要求。
  • 了解数据项如何工作以及如何使用项链接连接来自先前节点的数据项。

“json”属性不是对象

当代码节点返回的数据中的键未指向对象时,就会发生此错误。

如果您设置为不同的数据结构(例如数组),则可能会发生这种情况:

1
2
3
4
5
6
7
[
  {
    "json": [
	  // Setting `json` to an array like this will produce an error
	]
  }
]

要解决此问题,请确保键引用返回数据中的对象:

1
2
3
4
5
6
7
[
  {
    "json": {
	  // Setting `json` to an object as expected
	}
  }
]

代码不返回对象

当您的代码节点未返回任何内容或返回意外结果时,可能会发生此错误。

要解决此问题,请确保您的代码节点返回预期的数据结构

1
2
3
4
5
6
7
[
  {
    "json": {
	  // your data goes here
	}
  }
]

如果您提供的代码返回的结果与预期结果不同,也可能会出现此错误。在这种情况下,请确保“代码”节点中引用的数据在每次执行中都存在,并且具有代码预期的结构。

“导入”和“导出”只能出现在顶层

如果您尝试在代码节点中使用或 ,则会出现此错误。n8n 的 JavaScript 沙盒不支持这些函数。请改用函数加载模块。

要解决此问题,请尝试更改您的语句以使用:

1
2
3
4
// Original code:
// import express from "express";
// New code:
const express = require("express");

找不到模块“<module>”

如果您尝试在代码节点中使用而 n8n 找不到该模块,则会发生此错误。

仅适用于自托管

n8n 不支持在版本中导入模块。

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

  • 将模块安装到你的 n8n 环境中。如果你使用
    • 运行 n8n
    • ,请在与 n8n 相同的环境中安装该模块。
    如果你使用
    • 运行 n8n
    ,则需要使用包含你的模块的
    • 来扩展官方 n8n 镜像
  • 设置和环境变量以允许导入模块。

使用全局变量

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

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

尽可能使用“删除重复项”

如果您想使用变量来避免多次处理相同的数据项,请考虑使用“移除重复项”节点。“移除重复项”节点可以在执行过程中保存信息,以避免多次处理相同的数据项。